溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux要編譯源碼的原因是什么

發(fā)布時間:2023-03-17 10:37:53 來源:億速云 閱讀:105 作者:iii 欄目:建站服務(wù)器

本篇內(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)商會直接維護。

linux為什么要編譯源碼

一般來說,我們軟件的安裝方式有yum(rpm),和源碼編譯兩種方式,那么為什么我們需要源碼編譯安裝一部分軟件?選擇源碼編譯安裝軟件有以下幾個原因:

  • 滿足不同的運行平臺,我們Linux發(fā)型版本眾多,但是每個版本采用的軟件或者內(nèi)核版本都不一樣,而我們的二進制包所依賴的環(huán)境不一定能夠正常運行,所以大部分軟件直接提供源碼!

  • 方便定制,滿足不同的需求,很多時候我們所需要的軟件都是可以定制的,我需要什么就安裝什么,大多數(shù)二進制代碼都是一鍵裝全,所以自由度并不高!

  • 方便運維、開發(fā)人員維護,我們的源碼是可以打包二進制的,但是對于這個軟件的打包都會有一份代價不小的額外工作,包括維護,所以如果是源碼的話,軟件產(chǎn)商會直接維護,但是如果是二進制的話,一般都是Linux發(fā)行商提供。

linux編譯源碼教程

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ì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(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)容。

AI