您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“l(fā)inux要編譯源碼的原因是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
原因:1、Linux發(fā)型版本眾多,但是每個版本采用的軟件或者內(nèi)核版本都不一樣,而二進制包所依賴的環(huán)境不一定能夠正常運行,所以大部分軟件直接提供源碼進行編譯安裝。2、方便定制,滿足不同的需求。3、方便運維、開發(fā)人員維護;源碼是可以打包二進制的,但是對于這個軟件的打包都會有一份代價不小的額外工作,包括維護,所以如果是源碼的話,軟件產(chǎn)商會直接維護。
一般來說,我們軟件的安裝方式有yum(rpm),和源碼編譯兩種方式,那么為什么我們需要源碼編譯安裝一部分軟件?選擇源碼編譯安裝軟件有以下幾個原因:
滿足不同的運行平臺,我們Linux發(fā)型版本眾多,但是每個版本采用的軟件或者內(nèi)核版本都不一樣,而我們的二進制包所依賴的環(huán)境不一定能夠正常運行,所以大部分軟件直接提供源碼!
方便定制,滿足不同的需求,很多時候我們所需要的軟件都是可以定制的,我需要什么就安裝什么,大多數(shù)二進制代碼都是一鍵裝全,所以自由度并不高!
方便運維、開發(fā)人員維護,我們的源碼是可以打包二進制的,但是對于這個軟件的打包都會有一份代價不小的額外工作,包括維護,所以如果是源碼的話,軟件產(chǎn)商會直接維護,但是如果是二進制的話,一般都是Linux發(fā)行商提供。
Linux上幾乎所有的軟件都經(jīng)過了GPL授權(quán),因此幾乎所有的軟件都會提供源碼。
而一個軟件要在Linux上執(zhí)行,必須是二進制文件,因此當(dāng)我們拿到軟件源碼后,需要將它編譯成二進制文件才能在Linux上運行。
1、軟件編譯過程
將源碼編譯成可供Linux運行的二進制文件一共需要兩步:
使用gcc編譯器將源碼編譯成目標(biāo)文件
再次使用gcc編譯器將目標(biāo)文件鏈接成二進制文件
這過程看似簡單,實則不然。一個軟件的源代碼往往被封裝在多個源文件中,此外這些文件有錯綜復(fù)雜的依賴關(guān)系,編譯需要嚴(yán)格按照指定的順序進行,這無疑增加了編譯的難度。好在make命令可以幫助我們簡化編譯過程。
整個編譯過程被濃縮在Makefile文件中(告訴make命令需要怎么去編譯和鏈接程序),當(dāng)執(zhí)行make命令時,make會去當(dāng)前目錄中尋找Makefile文件,并根據(jù)該文件中的要求完成整個編譯過程。
而Makefile文件由configure命令產(chǎn)生。當(dāng)執(zhí)行configure命令時,configure會根據(jù)當(dāng)前系統(tǒng)環(huán)境動態(tài)生成一個適合本系統(tǒng)的Makefile文件,供make命令使用。
2、Linux源碼安裝步驟
獲取源碼
將軟件的源碼下載至/usr/local/,并解壓。
查看INSTALL與README文件
解壓后查看INSTALL與README文件,這兩個文件中詳細(xì)介紹了本軟件的安裝方法和注意事項。
創(chuàng)建Makefile文件
執(zhí)行configure命令,生成Makefile文件。
編譯
執(zhí)行make clean;make命令將源碼編譯成二進制文件。
PS:make clean命令用來清除上一次編譯生成的目標(biāo)文件。這個步驟可有可無,但為了確保編譯的成功,還是加上為好。防止由于軟件中含有殘留的目標(biāo)文件導(dǎo)致編譯失敗。
安裝
執(zhí)行make install命令將上一步編譯好的二進制文件安裝到指定的目錄中去。
3、安裝演示
1)進入/usr/local/,并創(chuàng)建memcached目錄:
cd /usr/local/
mkdir memcached
2)下載memcached的源碼
wget http://memcached.org/files/memcached-1.4.29.tar.gz
3)解壓源碼
tar -zxvf memcached-1.4.29.tar.gz
4)執(zhí)行configure,生成Makefile文件
./configure --prefix=/usr/local/memcached/
此時當(dāng)前目錄下將會生成一個Makefile文件。
注意:–prefix參數(shù)指定軟件安裝目錄。當(dāng)執(zhí)行make install命令時,會將軟件安裝在此路徑中,如果不指定該參數(shù),不指定prefix,可執(zhí)行文件默認(rèn)放在/usr /local/bin,庫文件默認(rèn)放在/usr/local/lib,配置文件默認(rèn)放在/usr/local/etc。其它的資源文件放在/usr /local/share。
5)執(zhí)行make,從Makefile中讀取指令,編譯源碼
make
此時make會讀取Makefile文件,將源碼編譯成二進制文件,并存放在當(dāng)前目錄下。
執(zhí)行這一步之前可以先進行清理作業(yè):
make clean && make uninstall
6)執(zhí)行make install,將軟件安裝至指定目錄
make install
此時二進制文件會被安裝到先前configure prefix參數(shù)設(shè)置的路徑中去。
安裝完成!
4、cmake命令(了解)
cmake就是一個與make同級別的編譯工具,只不過它依靠的不是Makefile作為編譯規(guī)則,而是根據(jù)CMakeLists.txt來編譯的。
CMake是一個比make更高級的編譯配置工具,它可以根據(jù)不同平臺、不同的編譯器,通過編寫CMakeLists.txt,可以控制生成的Makefile,從而控制編譯過程。
CMake自動生成的Makefile不僅可以通過make命令構(gòu)建項目生成目標(biāo)文件,還支持安裝(make install)、測試安裝的程序是否能正確執(zhí)行(make test,或者ctest)、生成當(dāng)前平臺的安裝包(make package)、生成源碼包(make package_source)、產(chǎn)生Dashboard顯示數(shù)據(jù)并上傳等高級功能,只要在CMakeLists.txt中簡單配置,就可以完成很多復(fù)雜的功能,包括寫測試用例。
如果有嵌套目錄,子目錄下可以有自己的CMakeLists.txt。
“l(fā)inux要編譯源碼的原因是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。