nginx编译必需安装pcre开发包(pcre-devel或libpcre3-dev),而非仅运行库;centos用yum install -y pcre-devel,ubuntu用apt install -y libpcre3-dev,安装后需验证头文件pcre.h存在且configure能检测到“found”字样。

安装 PCRE 库是编译 Nginx 的关键前置步骤,因为 Nginx 的 rewrite、location 正则匹配等功能都依赖它。重点不是只装运行库,而是必须装开发包(含头文件和静态/动态库),否则 ./configure 会报 “pcre library not found”。
用包管理器快速安装(推荐)
绝大多数情况下,直接使用系统包管理器最稳妥:
-
CentOS/RHEL 7/8/9:运行
yum install -y pcre-devel(RHEL 8+ 可用dnf install -y pcre-devel) -
Ubuntu/Debian:运行
apt update && apt install -y libpcre3-dev - 安装后验证:执行
rpm -q pcre-devel(CentOS)或dpkg -l | grep pcre3-dev(Ubuntu),有输出即表示已装好
手动编译安装(需要指定版本或系统无包时)
当系统仓库中 PCRE 版本过旧(如低于 8.41),或需启用 JIT、UTF-8 等特性时,可源码编译:
- 下载源码(例如 PCRE 8.45):
wget https://ftp.pcre.org/pub/pcre/pcre-8.45.tar.gz - 解压并进入目录:
tar zxvf pcre-8.45.tar.gz && cd pcre-8.45 - 配置安装路径(如
/usr/local/pcre):./configure --prefix=/usr/local/pcre --enable-utf8 --enable-jit - 编译并安装:
make && sudo make install - Nginx 配置时指定该路径:
./configure --with-pcre=/usr/local/pcre(注意:必须是configure --prefix指定的根目录,不能是src/或build/子目录)
常见失败原因与检查要点
很多编译失败其实卡在细节上:
- 只装了
pcre(运行库)或libpcre3,没装pcre-devel/libpcre3-dev→ configure 找不到pcre.h - 64 位系统误装 32 位开发包 → 检查
file /usr/lib64/libpcre.so是否存在且为 64 位 - 换参数重试前未清理缓存 → 进入 Nginx 源码目录执行
make clean或删掉objs/目录再试 - 验证是否识别成功:运行
./configure后查看objs/autoconf.err,搜索checking for PCRE library和found
不复杂但容易忽略,装对开发包、路径写准、清缓存再试,基本就能顺利通过。











