总结:先后遇到libz库文件没有正确的链接和pcre库文件没有正确的链接

1./configure后提示需要zlib


2.locate zlib,系统中没有zlib的共享库so文件,但是有一些头文件,不在/usr/include或者/usr/local/include下,还是找zlib-dev.rpm开发包安装一下比较好

3.看看 zlib-develxxx.rpm包的信息

rpm -qpi zlib-devel-1.2.3-27.el6.x86_64.rpm


4.看看该包里头都含有什么文件

rpm -qpl zlib-devel-1.2.3-27.el6.x86_64.rpm


5.查看该包的依赖关系

rpm -qpR zlib-devel-1.2.3-27.el6.x86_64.rpm


如图需要zlib包,依赖里头含有的so共享库

6.解压RPM文件看看

mkdir tmp

rpm2cpio /mnt/Packages/zlib-devel-1.2.3-27.el6.x86_64.rpm |cpio -div


7.在看看zlib-1.2.3xxx.rpm里头有什么

rpm -qpl /mnt/Packages/zlib-1.2.3-27.el6.x86_64.rpm


8.查查系统里头是不是已经安装了libz.so


系统里头已经安装了,应该是安装oracle的时候安装上的

9.系统自带的libz.so.1.2.3和zlib-1.2.3xxx.rpm中的libz.so.1.2.3大小比较.上面的是rpm,下面的是系统的


10.查看系统中自带的libz.so.1.2.3的SONAME:

readelf -d /lib64/libz.so.1.2.3


11.编译zlib-dev-1.2.3..RPM释放出来的example.c看看,用gcc时,-lz指定连接libz共享库


12.报错:找不到zlibz库


13.看看缓存,缓存里头有


原因,库文件位置不对.默认搜索/usr/lib或者/usr/lib64

14.解决办法:

ln -sv /lib64/libz.so.1.2.3 /usr/lib64/libz.so

15.再次编译

成功编译出example可执行文件,执行example,成功!


16.再次回到ngnix源代码目录,执行./configure成功,没有提示zlib库问题


17.make,make install后运行nginx报错


18.检查nginx的共享库都有哪些:

ldd –d nginx


19.检查libpcre.so现在系统的分布


ldconfig –v |grep pcre


20.原因如上,很明显是安装pcre后,库安装的位置为/usr/local/lib/*pcre*,而不是缺省的/usr/lib64

在redhat 64位机器上, nginx可能读取的pcre文件为/lib64/libpcre.so.1文件.

ln -s /usr/local/lib/libpcre.so.1 /lib64/


21.nginx正常运行,缺省情况下,./configure不加任何参数,则如图configure arguments=空