C++ добавя статичен libcurl, няма да се компилира

Използвам eclipse и mingw32. Проблемът ми е, че когато добавя -static флаг към опциите за свързване, получавам това съобщение за грешка:mingw32/bin/ld.exe: cannot find -llibcurl

Без флаг -static, той се комбинира добре и работи. Компилирах libcurl с помощта на mingw32. След това копирах заглавни файлове в папка mingw include и файлове от папка libcurl lib в папка mingw lib. Правя нещо нередно, но не знам какво.


person John    schedule 28.08.2013    source източник
comment
Какво е разширението на файла libcurl в папката lib?   -  person krsteeve    schedule 28.08.2013
comment
В папката lib има файлове libcurl.res, libcurl.a, libcurl.dll, libcurl,def и libcurl.rc.   -  person John    schedule 28.08.2013


Отговори (1)


-static означава "Не свързвайте срещу споделени библиотеки." Когато не използвате тези опции, линкерът свързва двоичния файл със споделена версия (libcurl.so на linux/libcurl.dll на windows). Вероятно нямате статична версия на libcurl във вашата среда за разработка или не давате правилния път на файла (libcurl.lib).

person OziMan    schedule 28.08.2013
comment
Имам файл libcurl.a в папка lib, мисля, че е същото? И да, искам да накарам exe да работи без зависимости и затова използвам -static. - person John; 28.08.2013
comment
можете да опитате да промените разширението на този файл на lib и да опитате отново. Доколкото знам .lib се използва за статични библиотеки. - person OziMan; 28.08.2013
comment
Опитах го, но даде друго:libcurl.lib(easy.o):(.text+0x1b5): недефинирана препратка към `WSACleanup@0' - person John; 28.08.2013
comment
Това може да е от полза -winsock може да се нуждаете и от статичната версия на библиотеката winsock или сте я свързали? - person OziMan; 29.08.2013