源码编译Nginx依赖缺失本质是缺开发头文件和链接库,须安装含“-dev”或“-devel”后缀的开发包;根据configure报错提示(如“zlib library not found”)定位缺失项,按系统装对应包:Ubuntu用libpcre3-dev等,RHEL/CentOS用pcre-devel等,并验证zlib.h、pcre.h及pkg-config识别状态。

源码编译 Nginx 时遇到依赖缺失,本质是系统缺少编译所需的开发头文件和链接库,不是运行时缺包。关键要装对“-dev”或“-devel”后缀的开发包,而不是只装运行库。
先确认缺哪个依赖
执行 ./configure 后报错,看最后一两行提示:
- “PCRE library not found” → 缺 PCRE 开发包
- “zlib library not found” → 缺 zlib 开发包
- “OpenSSL library not found” → 缺 OpenSSL 开发包
- “cc: command not found” 或 “no acceptable C compiler found” → 缺 GCC 和基础工具链
按系统装对开发包
不同发行版包名不同,不能混用:
-
Ubuntu/Debian:运行
sudo apt update && sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev -
RHEL/CentOS 7–8:运行
sudo yum groupinstall "Development Tools" && sudo yum install pcre-devel zlib-devel openssl-devel -
RHEL/CentOS 9+、Rocky/AlmaLinux、Fedora:运行
sudo dnf groupinstall "Development Tools" && sudo dnf install pcre2-devel zlib-devel openssl-devel -
银河麒麟 V10(离线):需提前下载对应版本的
zlib-devel、pcre2-devel、openssl-devel及其依赖(如glibc-devel),用rpm -ivh按依赖顺序安装
验证开发包是否真到位
别只看安装命令跑完就以为好了,检查关键文件是否存在:
-
ls /usr/include/zlib.h(应存在) -
ls /usr/include/pcre.h(应存在) -
pkg-config --exists zlib && echo OK(返回 OK 才算被识别) -
gcc --version && make --version(确认编译器可用)
手动指定路径(仅当必须自定义安装时)
如果用了源码编译安装 zlib、PCRE 或 OpenSSL(比如装在 /usr/local/zlib),configure 时得显式告诉 Nginx:
./configure --with-zlib=/usr/local/zlib --with-pcre=/usr/local/pcre --with-openssl=/usr/local/openssl [其他参数]- 注意:路径必须是
configure --prefix指定的根目录,里面要有include/和lib/子目录
重试前清理缓存
configure 结果会被缓存,换依赖或改参数后不清理容易误判:
- 进 Nginx 源码目录,先执行
make clean(如有已编译产物) - 或者直接删掉
objs/目录和Makefile - 再重新运行
./configure,成功后看输出里是否有 “checking for PCRE library ... found” 这类确认行


















