總結:前後遇到libz庫文件沒有正確的連接和pcre庫文件沒有正確的連接nginx
1./configure後提示須要zlib緩存
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
4.看看該包裏頭都含有什麼文件開發
rpm -qpl zlib-devel-1.2.3-27.el6.x86_64.rpm get
5.查看該包的依賴關係 pm2
rpm -qpR zlib-devel-1.2.3-27.el6.x86_64.rpm it
如圖須要zlib包,依賴裏頭含有的so共享庫io
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=空