2014-09-07 3 views
1

Я был в Google за последние час или два, и до сих пор не появилось никакого решения. Есть много сообщений на форуме, сообщений stackoverflow и т. Д., Но большинство, если не все, не связывают библиотеку (например, вообще).Почему библиотека c curl + libcurl отказывается ссылаться правильно под cygwin?

Я компиляции пример сценария это один, в частности: http://curl.haxx.se/libcurl/c/sepheaders.html

фон

Я использовал тот же метод, как это установить: link

Первый путь

Составлено с использованием:

gcc -std=c89 -pedantic -Wall file_name -ofile_name.exe -lcurl 

Результаты:

save.c:26:23: fatal error: curl/curl.h: No such file or directory 
#include <curl/curl.h> 
       ^
compilation terminated. 

Примечание

Казалось, завиток не получал распакованы или что-то.

Второй путь

Загрузка источника и размещения локон реж с curl.h в пользователя \ включать \ завиток.

Я использовал вариации этого для компиляции/сборки:

gcc -std=c89 -pedantic -Wall file_name -ofile_name.exe -lcurl 

Curl библиотека находится здесь C: \ cygwin64 \ USR \ включать \ локон

Результаты:

/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lcurl 
collect2: error: ld returned 1 exit status 

Второй способ

Составлено с использованием:

gcc -std=c89 -pedantic -Wall file_name -ofile_name.exe -Lcurl 

Результаты:

/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0xe7): undefined reference to `curl_global_init' 
/cygdrive/c/Users/user3624582/[Finished in 0.4s with exit code 1]AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0xe7): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_global_init' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0xec): undefined reference to `curl_easy_init' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0xec): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_init' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x10d): undefined reference to `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x10d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x129): undefined reference to `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x129): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x146): undefined reference to `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x146): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x173): undefined reference to `curl_easy_cleanup' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x173): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_cleanup' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x1aa): undefined reference to `curl_easy_cleanup' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x1aa): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_cleanup' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x1ce): undefined reference to `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x1ce): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x1eb): undefined reference to `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x1eb): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_setopt' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x1f7): undefined reference to `curl_easy_perform' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x1f7): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `curl_easy_perform' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x21b): undefined reference to `curl_easy_cleanup' 
/cygdrive/c/Users/user3624582/AppData/Local/Temp/ccHBcDdl.o:save.c:(.text+0x21b): additional relocation overflows omitted from the output 

Вещи пытались

Используйте Cygwin для загрузки источника (не только двоичную, как раньше)

Используйте Cygwin переустанавливать локон/Libcurl

использовать cygwin для удаления и i nstall curl/libcurl

Я попытался загрузить его здесь: http://curl.haxx.se/download.html Перейти к нижней части страницы для cygwin64.

После свежего бен загрузки из Cygwin: looks like this

Вещи еще не пробовали

Плач

Риппинг волосы

+2

Вы должны установить пакеты 'libcurl' и' libcurl-devel' через cygwin. У вас будут файлы 'libcurl.a' и' libcurl.dll.a' под '/ usr/lib'. Не загружайте ничего из curl.haxx.se. Используйте '-lcurl', а не' -Lcurl'. –

+0

@ н.м. Это сделал трюк. Ответьте на ответ, чтобы я мог отметить, как было решено. Почему бы не скачать что-нибудь из curl.haxx.see? Интересно, почему этот http://stackoverflow.com/questions/3647569/how-do-i-install-curl-on-cygwin/7559640#7559640 не упоминал о каком-то другом событии? Кроме того, где-то я читал девелл, а также файлы .a выходят из строя для завитки? – user3624582

+1

Связанный вопрос задает вопрос о исполняемом скрипте, а не о библиотеках, с которыми нужно работать. –

ответ

3

Все пути ниже являются Cygwin пути, а не пути для Windows.

В диспетчере пакетов cygwin (обычно в качестве /setup из оболочки) выберите libcurl и libcurl-devel. Не загружайте ничего с curl.haxx.se. У Cygwin есть все, что подходит для вашей среды, и его менеджер пакетов заботится о ваших зависимостях.

Только если вам по каким-то причинам нужны пакеты, созданные curl.haxx.se (например, вам абсолютно нужна последняя и самая большая версия, не принятая cygwin), загрузите их с curl.haxx.se. Do не перезаписывать файлы, установленные cygwin; вместо этого, поместите библиотеки в /usr/local/lib, заголовки в /usr/local/include, а также исполняемые файлы и библиотеки DLL в /usr/local/bin. В противном случае cygwin будет с удовольствием разбивать ваши файлы при следующем обновлении. Добавьте соответствующие команды -I и -L в команду компиляции. Вы сами по себе используете путь поиска DLL. Вы можете добавить /usr/local/bin в PATH, но тогда вы можете открыть свою личную версию аддона DLL. Вам также нужно будет убедиться, что вы загружаете файлы для правильной архитектуры и отслеживаете зависимости вручную. Короче говоря, не делайте этого, если вы точно не знаете, что делаете и зачем вам это нужно.

Если вы используете менеджер пакетов cygwin, используйте только флаг компоновщика . Если вы загружаете файлы с curl.haxx.se (не делайте этого), используйте -I/usr/local/include для компиляции и -L /usr/local/lib для связи, в дополнение к -lcurl. Примечание -l и -L - это разные флаги.

+0

Отличный напишите! Очень ясно. Определенно забрал несколько вещей в следующий раз. – user3624582

Смежные вопросы