总结:先后遇到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=空