How to fix C++ error "undefined reference to `zlibVersion'"

Problem:

When compiling your C++ application, you see one or more of the following error message (complete error message log example shown below)

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_'

Solution

You need to link zlib to your executable - the library that needs to be linked is called z (libz.so). When running gcc manually, use the -lz option, for example:

gcc_link_zlib.sh
gcc -o myexe main.cpp -lz

When using CMake, use

CMakeLists.txt
add_executable(myexe main.cpp)
target_link_libraries(myexe z)

Full error log example:

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