如何修复 C++ error: undefined reference to zlibVersion
问题:
编译 C++ 应用程序时,你看到以下一个或多个错误消息(完整错误消息日志示例如下所示)
zlib_undefined_references.txt
version.c:(.text+0x5d): undefined reference to `zlibVersion'
content_encoding.c:(.text+0x1f8): undefined reference to `inflateInit_'
content_encoding.c:(.text+0x2b5): undefined reference to `inflateEnd'
/usr/bin/ld: content_encoding.c:(.text+0x401): undefined reference to `inflateInit2_'解决方案
你需要将 zlib 链接到你的可执行文件 - 需要链接的库称为 z(libz.so)。手动运行 gcc 时,使用 -lz 选项,例如:
gcc_link_zlib.sh
gcc -o myexe main.cpp -lz使用 CMake 时,使用
CMakeLists.txt
add_executable(myexe main.cpp)
target_link_libraries(myexe z)完整错误日志示例:
ld_error_zlib.txt
/usr/bin/ld: /home/uli/.conan/data/libcurl/7.69.1/_/_/package/d66c87f35a2a176e10af56a7f32a51d6e7b43e26/lib/libcurl.a(libcurl_la-version.o): in function `curl_version':
version.c:(.text+0x5d): undefined reference to `zlibVersion'
/usr/bin/ld: /home/uli/.conan/data/libcurl/7.69.1/_/_/package/d66c87f35a2a176e10af56a7f32a51d6e7b43e26/lib/libcurl.a(libcurl_la-version.o): in function `curl_version_info':
version.c:(.text+0x169): undefined reference to `zlibVersion'
/usr/bin/ld: /home/uli/.conan/data/libcurl/7.69.1/_/_/package/d66c87f35a2a176e10af56a7f32a51d6e7b43e26/lib/libcurl.a(libcurl_la-content_encoding.o): in function `deflate_init_writer':
content_encoding.c:(.text+0x1f8): undefined reference to `inflateInit_'
... (truncated)Check out similar posts by category:
C/C++, GCC Errors
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow