前言

zlib是一个压缩库,兼容gzip格式,免费开源


Windows环境

网址:zlib Home Site

zlib-1.3.1:http://www.zlib.net/zlib131.zip


编译好的 DLL 库

网址:ZLIB DLL Home Page (winimage.com)

下载:目前下载Windows 64位版本动态库http://www.winimage.com/zLibDll/zlib123dllx64.zip

librdkafka-master链接zlib114dll.zip,提示出错

LNK2019 无法解析的外部符号 _deflateBound,该符号在函数 _rd_kafka_msgset_writer_compress_gzip 中被引用

因此采用下面编译的方式,采用1.3.1版本解决该引用问题

zlib  源码下载编译链接__deflateBound


采用CMake 3.24.0-r3版本编译+VS2017,编译以后,需要将build/zconf.h和源码根路径的zlib.h文件拷贝到同一个文件夹,作为zlib的include,第三方库通过添加该文件夹,作为附加包含目录,zlibd.lib库文件在文件夹build\Debug目录下


librdkafka-master引用zlib

添加头文件路径

ZLIB_INCLUDE_DIR

zlib  源码下载编译链接_ZLIB_LIBRARY_02

添加库文件

ZLIB_LIBRARY

zlib  源码下载编译链接__deflateBound_03


问题

无法解析的外部符号 _deflateBound

采用1.3.1版本解决该问题


Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)

按照上面图片配置ZLIB_LIBRARY


Linux环境

系统默认自带,如果有特殊版本要求,就需要手动编译

链接动态库参数  -lz

Debian ARM版本下动态库名称

/usr/lib/aarch64-linux-gnu/libz.so

/usr/lib/aarch64-linux-gnu/libz.so.1

/usr/lib/aarch64-linux-gnu/libz.so.1.3.1

问题

undefined symbol: deflateInit_

undefined symbol: inflateEnd

程序运行提示出错:

该问题出现在链接ffmpeg动态库,没有在Makefile中没有添加 -lz 链接参数,链接zlib动态库导致的,