Как собрать cURL и использовать его в проекте Code::Blocks (статический)

Я знаю, что есть много тем об этом, но ни одна из них не помогла мне решить мою проблему. Все, что я хочу, это сделать простую программу на C++, которая использует cURL со статическим libcurl (без DLL-файлов) на Code::Blocks - Windows 8. Я потратил около 20 часов, пытаясь сделать это, но все, что я нашел, это бесполезные вещи и вещи, которые я не понимаю.

Загрузив curl-7.39.0.zip с http://curl.haxx.se/download.html и распаковав его в каталог Code::Block, я запустил командную строку разработчика для VS2013 в качестве администратора и ввел следующее:

cd C:\Program Files (x86)\CodeBlocks\curl-7.39.0\winbuild
nmake /f Makefile.vc mode=static vc=12 debug=no

Вывод второй команды: http://pastebin.com/bwPqxp9V

Затем я создал новый пустой проект Code::Blocks с помощью Main.cpp:

#include <curl/curl.h>
int main() { curl_global_cleanup(); }

В Code::Blocks я перешел к Проекту> Параметры сборки
В настройках компилятора> Определения я добавил CURL_STATICLIB
В " Настройки компоновщика"> "Библиотеки ссылок" я добавил путь к созданному файлу.lib (который существует):

..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib

В настройках компоновщика> Другие параметры ссылки я добавил -static
В Поиск каталогов> Компилятор я добавил:

..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include

Возможно, я редактировал некоторые другие вещи, но ничего важного.
Когда я строю с использованием GNU GCC Compiler с помощью следующей команды:

mingw32-g++.exe  -o Debug\MyTestProgram.exe Debug\Main.o  -static  "..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib"

Я получаю 80 предупреждений, похожих на:

.drectve `/DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES" ' unrecognized

И более 50 ошибок. Что я сделал не так и как можно это исправить?
Не стесняйтесь спрашивать меня для более подробной информации, если это необходимо.

Журнал ошибок:

..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\easy.obj):(.text$mn+0x7)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\easy.obj):(.text$mn+0x44)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\easy.obj):(.text$mn+0x64)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x13b)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x151)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x10d)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x295)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x2ac)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x17b)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\multi.obj):(.text$mn+0x2ea)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\cookie.obj):(.text$mn+0x7)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\cookie.obj):(.text$mn+0x80)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\cookie.obj):(.text$mn+0x41d)||undefined reference to `_imp__strtoll'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\cookie.obj):(.text$mn+0x58f)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\cookie.obj):(.text$mn+0x754)||undefined reference to `_imp__strtoll'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\cookie.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\cookie.obj):(.text$mn+0x45)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\cookie.obj):(.text$mn+0x57)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\curl_sspi.obj):(.text$mn+0x7)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\curl_sspi.obj):(.text$mn+0xca)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\curl_sspi.obj):(.text$mn+0xfc)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\asyn-thread.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\asyn-thread.obj):(.text$mn+0x5a)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\asyn-thread.obj):(.text$mn+0x91)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\asyn-thread.obj):(.text$mn+0x12e)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\asyn-thread.obj):(.text$mn+0x198)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\asyn-thread.obj):(.text$mn+0x1ae)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\asyn-thread.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\asyn-thread.obj):(.text$mn+0xaa)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x88)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x7)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x178)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x42)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x7b)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\hostip.obj):(.text$mn+0x8e)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0x7)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0x12c)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0x7)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0xd5)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0x115)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0x4)||undefined reference to `__security_cookie'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0xa4)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0x1c6)||undefined reference to `@__security_check_cookie@4'|
..\..\..\..\Program Files (x86)\CodeBlocks\curl-7.39.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib(..\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl-obj-lib\url.obj):(.text$mn+0x216)||undefined reference to `@__security_check_cookie@4'|
||More errors follow but not being shown.|

1 ответ

Решение

Вступление:

Для сборки libcurl с gcc на windows вам понадобится инструмент командной строки. Вы можете использовать Git-Bash или MSYS. Твой выбор.


Начиная:

Запустите установку MSYS. Выберите любую папку для установки. Когда появится окно командной строки, ответьте следующим образом:


PRE-SETUP:

Теперь у вас есть инструмент командной строки make, который совместим с вашим gcc/g++/mingw.

ДО того, как мы запустим команды, вам нужно знать несколько вещей:

  • Если используется 32-битный gcc / g ++, измените на: --build=i686-pc-mingw32,

  • Если используется 64-битная версия gcc / g ++, измените на: --build=x86_64-w64-mingw32,

  • Если вы используете SSL, измените --without-ssl в --with-ssl и добавить -DOPENSSL_PATH=Path_To_Open_SSL_Here,

  • Если вам нужно указать специальный путь к вашей ZLIB, то добавьте -DZLIB_PATH=Path_To_ZLib_Here,

  • Если вы хотите собрать STATIC, используйте --disable-shared иначе не используйте это ИЛИ не используйте --enable-shared,


Конфигурация:

Откройте MSYS.bat и выполните следующие команды (измените их, как описано выше):

$ cd "C:/Users/USERNAME/Desktop/curl-7.39.0"

$ ./configure --prefix=/usr/local --without-ssl --disable-shared --build=x86_64-w64-mingw32 CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

Следует начать делать кучу "проверок". Это займет некоторое время, так что иди за кофе или что-то в этом роде. Если все хорошо, и настройка завершена, и у вас все настроено правильно, то вы должны увидеть следующее:


Сборка и установка:

Наконец, выполните следующие команды:

$ make install-strip

Теперь он должен начать сборку и будет установлен в (Где бы ни находилась ваша установка MSYS - Моя C:/Msys):

 C:/Msys/1.0/local/bin
 C:/Msys/1.0/local/include
 C:/Msys/1.0/local/lib

В этих местах должны быть все файлы, необходимые для использования libcurl с gcc/g++/mingw.

Если все прошло хорошо, это будет выглядеть так:


НЕОБЯЗАТЕЛЬНЫЙ:

  • Вы можете либо связаться с ними в этом месте, либо переместить их.
  • Вы можете скопировать файлы из "include", "lib" и "bin" в папку установки mingw соответственно (include + curl-folder для включения, bin to bin, lib + package-folder to lib).
Другие вопросы по тегам