【发布时间】:2018-05-07 03:07:53
【问题描述】:
我有一个应用程序将 LibCurl 库与我想静态链接的 nghttp2-library 结合使用。
我用来构建的构建命令:
i686-w64-mingw32-g++ -Wall Programm.cpp -o Programm.exe -I/opt/mingw64/Win32/include -L/opt/mingw64/Win32/lib -I/Software -I/Software/Deps -std=c++11 -lgcc -lstdc++ -lnghttp2 -lcurl -lssl -lcrypto -DCURL_STATICLIB -lpthread -lws2_32 -static
它产生的构建错误:
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x47): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x77): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xaf): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x448): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x4ac): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x5d4): more undefined references to `_imp__nghttp2_session_get_stream_user_data' follow
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x6ee): undefined reference to `_imp__nghttp2_session_want_write'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x75e): undefined reference to `_imp__nghttp2_priority_spec_init'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x7e2): undefined reference to `_imp__nghttp2_submit_priority'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x7ef): undefined reference to `_imp__nghttp2_session_send'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x8d3): undefined reference to `_imp__nghttp2_session_del'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x94d): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xb43): undefined reference to `_imp__nghttp2_submit_rst_stream'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xb4e): undefined reference to `_imp__nghttp2_is_fatal'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xb69): undefined reference to `_imp__nghttp2_session_get_remote_settings'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xcdb): undefined reference to `_imp__nghttp2_submit_rst_stream'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xce4): undefined reference to `_imp__nghttp2_is_fatal'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xda8): undefined reference to `_imp__nghttp2_session_set_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xe80): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xeca): undefined reference to `_imp__nghttp2_session_set_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xf6d): undefined reference to `_imp__nghttp2_session_want_read'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xf87): undefined reference to `_imp__nghttp2_session_want_write'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0xfc7): undefined reference to `_imp__nghttp2_session_mem_recv'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x1036): undefined reference to `_imp__nghttp2_strerror'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x11c5): undefined reference to `_imp__nghttp2_http2_strerror'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x1298): undefined reference to `_imp__nghttp2_session_resume_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x12ca): undefined reference to `_imp__nghttp2_is_fatal'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x176c): undefined reference to `_imp__nghttp2_submit_request'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x17bb): undefined reference to `_imp__nghttp2_session_send'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x17f9): undefined reference to `_imp__nghttp2_session_resume_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x1d0c): undefined reference to `_imp__nghttp2_session_mem_recv'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x1d19): undefined reference to `_imp__nghttp2_is_fatal'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x1f9e): undefined reference to `_imp__nghttp2_strerror'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2037): undefined reference to `_imp__nghttp2_session_callbacks_new'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2071): undefined reference to `_imp__nghttp2_session_callbacks_set_send_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2086): undefined reference to `_imp__nghttp2_session_callbacks_set_on_frame_recv_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x209b): undefined reference to `_imp__nghttp2_session_callbacks_set_on_invalid_frame_recv_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x20b0): undefined reference to `_imp__nghttp2_session_callbacks_set_on_data_chunk_recv_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x20c5): undefined reference to `_imp__nghttp2_session_callbacks_set_before_frame_send_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x20da): undefined reference to `_imp__nghttp2_session_callbacks_set_on_frame_send_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x20ef): undefined reference to `_imp__nghttp2_session_callbacks_set_on_frame_not_send_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2104): undefined reference to `_imp__nghttp2_session_callbacks_set_on_stream_close_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2119): undefined reference to `_imp__nghttp2_session_callbacks_set_on_begin_headers_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x212e): undefined reference to `_imp__nghttp2_session_callbacks_set_on_header_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2143): undefined reference to `_imp__nghttp2_session_callbacks_set_error_callback'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x215e): undefined reference to `_imp__nghttp2_session_client_new'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x216d): undefined reference to `_imp__nghttp2_session_callbacks_del'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x21b7): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x21e7): undefined reference to `_imp__nghttp2_session_get_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x22bc): undefined reference to `_imp__nghttp2_version'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x22f2): undefined reference to `_imp__nghttp2_http2_strerror'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2510): undefined reference to `_imp__nghttp2_session_set_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2555): undefined reference to `_imp__nghttp2_submit_rst_stream'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2631): undefined reference to `_imp__nghttp2_pack_settings_payload'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2751): undefined reference to `_imp__nghttp2_session_resume_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x298c): undefined reference to `_imp__nghttp2_submit_settings'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x29bd): undefined reference to `_imp__nghttp2_session_set_local_window_size'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2a41): undefined reference to `_imp__nghttp2_session_upgrade'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2a54): undefined reference to `_imp__nghttp2_strerror'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2a85): undefined reference to `_imp__nghttp2_strerror'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2ab5): undefined reference to `_imp__nghttp2_strerror'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2afb): undefined reference to `_imp__nghttp2_session_set_stream_user_data'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2b49): undefined reference to `_imp__nghttp2_session_mem_recv'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2b54): undefined reference to `_imp__nghttp2_is_fatal'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2b88): undefined reference to `_imp__nghttp2_strerror'
/opt/mingw64/Win32/lib/libcurl.a(libcurl_la-http2.o):http2.c:(.text+0x2bb5): undefined reference to `_imp__nghttp2_strerror'
collect2: error: ld returned 1 exit status
我已经使用以下命令构建了 nghttp2:
wget https://github.com/nghttp2/nghttp2/releases/download/v1.27.0/nghttp2-1.27.0.tar.gz
tar xf nghttp2-1.27.0.tar.gz
cd nghttp2-1.27.0/
./configure --host=i686-w64-mingw32 --prefix=/opt/mingw64/Win32
make
make install
那么,查看静态链接 LibCurl 与 nghttp2 库的构建命令有什么问题?
【问题讨论】:
-
好像有动态链接。你确定 nghttp2 库是静态构建的吗?
-
如果您的 nghttp2 是静态构建的,并且您可以在
libnghttp2.a中看到这些符号,也许您可以尝试在命令中添加两次-lnghttp2(在某些库之前,然后在其他库之后再次添加) )。 -
@miradham。不,我想是的,但我该如何验证呢?我有
libnghttp2.a文件,这让我觉得我有一个静态构建? -
@miradham 我在我的问题中添加了 nghttp2 build 命令
-
你能试试 -DCURL_STATICLIB $(curl-config --static-libs) 吗?看起来 libcurl 正在尝试动态链接
标签: c++ static-libraries libcurl g++4.8 nghttp2