ngnix编译遇到的问题.

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

1./configure后提示需要zlib

image

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

image

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

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

image

5.查看该包的依赖关系

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

image

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

6.解压RPM文件看看

mkdir tmp

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

image

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

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

image

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

image

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

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

image

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

readelf -d /lib64/libz.so.1.2.3

image

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

image

12.报错:找不到zlibz库

image

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

image

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

14.解决办法:

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

15.再次编译

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

image

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

image

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

image

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

ldd –d nginx

image

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

image

ldconfig –v |grep pcre

image

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/ 

image

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

image

原文地址:https://www.cnblogs.com/jjkv3/p/3822074.html