ngnix編譯遇到的問題.

總結:前後遇到libz庫文件沒有正確的連接和pcre庫文件沒有正確的連接nginx

1./configure後提示須要zlib緩存

image

2.locate zlib,系統中沒有zlib的共享庫so文件,可是有一些頭文件,不在/usr/include或者/usr/local/include下,仍是找zlib-dev.rpm開發包安裝一下比較好oracle

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

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

image

4.看看該包裏頭都含有什麼文件開發

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

image

5.查看該包的依賴關係 pm2

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

image

如圖須要zlib包,依賴裏頭含有的so共享庫io

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

相關文章
相關標籤/搜索