./configure && make && make install詳解


Linux中利用源碼包安裝軟件最重要的就是要仔細閱讀安裝包當中的README  INSTALL兩個說明文件,這兩個文件會清楚的告訴你如何可以正確的完成這個軟件的安裝!
         我們都知道源碼包安裝分為這么幾個階段,
1、    ./configure“configure會在你的系統上測試存在的特性    Make:編譯程序。
5、  cd:進入到這個源碼包。
 
現在ls一下mrtg這個目錄下多了一個藍色字體的httpd-2.2.11這個目錄,這個目錄就是我們剛解壓開的,然后cd進入到這個目錄下面!如果不進入到這個目錄下而是直接 ./configure則會出現下圖的提示!
3、 bug!) 然后來建立 Makefile文件來完成 make
“configure”腳本有大量的命令行選項,對不同的軟件包來說,這些選項可能會有變化,但是許多基本的選項是不會改變的。而我們用的最多的也就是下面這條命令:
./configure --prefix=/軟件要安裝的路徑
但是我們也可以直接./configure而不指定路徑,通常通過從源碼包編譯安裝的軟件默認路徑都是/usr/local/,如果./configure不成功而直接去make的話,就會出現下圖的錯誤:
當我們解決完./configure的錯誤,然后重新./configure成功后,我們就可以編譯程序了!
再說幾個能關系到能否編譯成功的文件:/etc/ld.so.conf、ldconfig
首先說一下/etc/ld.so.conf,這個文件中記錄的編譯時使用的動態鏈接庫的路徑,默認情況下編譯器只會使用/lib和/usr/lib這兩個目錄下的庫文件,如果你安裝了其他的庫,那么安裝完成后就在/etc/ld.so.conf把這個庫文件中的絕對路徑寫進去就OK了。
再來看看ldconfig是個什么東西吧:
他是一個程序,它的作用就是將/etc/ld.so.conf中的路徑緩存到/etc/ld.so.cache中,因此在安裝完一些庫文件或者修改ld.so.conf增加新的路徑后需要運行一下/sbin/ldconfig使所有的庫文件都緩存都ld.so.cache中,如果沒有運行/sbin/ldconfig,即使庫文件就在/etc/ld.so.conf中,也是不會被使用的,結果在編譯的過程中同樣報錯缺少XXX庫!
4Make:編譯程序。
在編譯的時候, gcc個版本之間存在着差異,所以有時候用不同版本的 gcc去編譯,有的版本能編譯成功,有的就編譯失敗,這樣的錯誤只是版本問題。
另外在 make的時候會出現的另一個錯就是比較難辦的,遇到這樣的問題就只能憑經驗查找原因,比如說某個頭文件沒有找到,這個時候就要順着出錯的位置一行一行的往上找,比如顯示 XXXXXX.h………no such file or directory,說明缺少頭文件,或者找到你覺得有價值的錯誤信息去搜索引擎里搜索,從這里可能會找到對你有用的信息,最重要的就是在安裝之前仔細的去看 READMEINSTALL文件,這兩個文件里會告訴你程序應該怎樣去安裝,需要什么依賴文件等等。
有的時候在編譯時不知道是否編譯成功,而在沒有編譯成功就去 make  install肯定會出錯,這樣就增加了問題的復雜性,俗話說的好“道高一尺魔高一丈”,這樣我們可以在 make結束的時候通過一條命令來檢查是否成功編譯: echo  $?
輸入這條命令回車后,輸出的結果是 0,那么就說明成功編譯,否則就是出錯了, echo  $?表示檢查上一條命令的退出狀態,程序正常退出返回 0
5、<span times="" new="" roman'"="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">   Make install:安裝文件!
它也從 Makefile中讀取指令,然后安裝到指定的位置。
看到上圖輸出 0之后我們就可以 make  install來安裝了,運行完之后輸入 echo  $?檢查看看是否有錯誤,只要輸出結果為 0,那就說明我們的安裝成功,我們可以測試一下,把 Apache的服務起來 /usr/local/apache2/bin/apachectl start,因為 Apache的端口是 80所以我們 netstat -lan | grep 80來看看 80端口處於監聽狀態不:
然后再 IE里輸入服務器的 IP地址 http://10.10.234.203/
成功了,說明我們的安裝沒問題 !
其實 ./configuremakemake  install這三個命令,我們可以用 &&來把命令連接起來執行,表示當前一條命令正常結束后,后面的命令才會執行,這個辦法很好,既節省時間,又可以防止發生錯誤。例:
./configure  &&  make  &&  make  install


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM