在 Linux for Windows 下与 mingw32 交叉编译时链接 libcurl

Linking libcurl while cross compiling with mingw32 under Linux for Windows

我已经使用 mingw32 编译了 libcurl,我正在尝试 link 我的程序使用 mingw32 为我的 Linux 机器上的 Windows 系统编译它。

我是输出文件,libcurl-4.dll libcurl.a libcurl.la libcurl.lai.

我已将它们包含在我的 mingw32 libs 文件夹中:/usr/x86_64-w64-mingw32/lib

我能够在 link 上找到一些其他主题,使用 libstdc++ 和 libgcc 来处理执行时的依赖错误,但是当尝试添加 libcurl.a 时,它不会编译期。

我使用了以下内容:

$ x86_64-w64-mingw32-g++ main.cpp -o hello.exe -static-libgcc -static-libstdc++ -static "/usr/x86_64-w64-mingw32/lib/libcurl.a" -lpthread

但是,我不能不让它使用 libcurl.a 并且继续收到这些错误。

/tmp/ccIceRus.o:main.cpp:(.text+0xde): undefined reference to `__imp_curl_easy_init'
/tmp/ccIceRus.o:main.cpp:(.text+0x106): undefined reference to `__imp_curl_easy_setopt'
/tmp/ccIceRus.o:main.cpp:(.text+0x122): undefined reference to `__imp_curl_easy_setopt'
/tmp/ccIceRus.o:main.cpp:(.text+0x13e): undefined reference to `__imp_curl_easy_setopt'
/tmp/ccIceRus.o:main.cpp:(.text+0x159): undefined reference to `__imp_curl_easy_setopt'
/tmp/ccIceRus.o:main.cpp:(.text+0x169): undefined reference to `__imp_curl_easy_perform'
/tmp/ccIceRus.o:main.cpp:(.text+0x180): undefined reference to `__imp_curl_easy_strerror'
/tmp/ccIceRus.o:main.cpp:(.text+0x197): undefined reference to `__imp_curl_easy_cleanup'
/usr/bin/x86_64-w64-mingw32-ld: /tmp/ccIceRus.o: bad reloc address 0x80 in section `.xdata'
collect2: error: ld returned 1 exit status

我做错了什么?。我无法摆脱这个。我知道这一定是个愚蠢的问题。

谢谢。

我能够通过指定 -DCURL_STATICLIB 以及链接其他一些依赖项来解决问题。

x86_64-w64-mingw32-g++ main.cpp -o hello.exe -DCURL_STATICLIB -static -lstdc++ -lgcc -lpthread -lcurl -lwldap32 -lws2_32