Nginx编译报“zlib library not found”本质是configure未检测到zlib开发包(含zlib.h和库文件),需检查Configuration summary、验证zlib-devel安装及pkg-config识别状态,再按包管理器安装、源码指定--with-zlib或非标路径显式指定头/库路径修复,并清理缓存重配。

编译 Nginx 时提示 “zlib library not found” 或 “the HTTP gzip module requires the zlib library”,说明 configure 脚本未能识别系统中可用的 zlib 开发支持,不是运行时缺库,而是编译阶段找不到头文件(zlib.h)和链接所需的静态/动态库文件。
看 configure 输出末尾的关键线索
执行 ./configure [参数] 后,不要只盯着报错行,重点检查最后 10 行:
- 如果出现
Configuration summary,且含using zlib library: /usr,说明已识别成功 - 如果看到
checking for zlib library ... not found,就直接锁定是 zlib 缺失或路径异常 - 如果连 summary 都没输出,可能是 gcc、make 等基础工具缺失,或权限/路径错误导致 configure 未正常执行
验证 zlib 开发包是否真实安装到位
仅运行 yum install zlib-devel 或 apt install zlib1g-dev 不代表一定成功。要手动确认关键文件存在:
- 检查头文件:
ls /usr/include/zlib.h—— 必须能列出 - 检查 pkg-config 是否识别:
pkg-config --exists zlib && echo OK—— 返回 OK 才算被构建系统认可 - Ubuntu/Debian 用户注意:必须装
zlib1g-dev,不是zlib1g(后者只是运行时库) - RHEL/CentOS/Rocky 用户注意:RHEL 9+ 应用
zlib-devel,不是zlib1-devel;旧版用zlib-devel即可
区分场景,选对修复方式
根据你实际安装 zlib 的方式,处理逻辑不同:
- 用包管理器安装(推荐):直接运行对应命令即可
Ubuntu:sudo apt update && sudo apt install zlib1g-dev
RHEL/CentOS 7–8:sudo yum install zlib-devel
RHEL/CentOS 9+:sudo dnf install zlib-devel - 源码编译安装了 zlib(如装在
/usr/local/zlib):
configure 时必须加参数:--with-zlib=/usr/local/zlib(路径指向解压后的源码根目录,含 configure 脚本) - 二进制安装但路径非标准(如
/opt/zlib/include/zlib.h):
需显式指定头文件和库路径:--with-zlib-include=/opt/zlib/include --with-zlib-lib=/opt/zlib/lib
重试前务必清理缓存
configure 的检测结果会被缓存,换依赖或改参数后不清理容易误判:
- 进入 Nginx 源码目录,执行:
make clean(如有已编译产物) - 或直接删除:
rm -rf objs/ Makefile - 再重新运行
./configure,成功后再次确认末尾是否有using zlib library提示


















