目錄
linux為什麼要編譯原始碼
linux編譯原始碼教學
首頁 運維 linux運維 linux為什麼要編譯原始碼

linux為什麼要編譯原始碼

Mar 17, 2023 am 10:21 AM
linux 編譯

原因:1、Linux髮型版本眾多,但是每個版本採用的軟體或核心版本都不一樣,而二進位套件所依賴的環境不一定能夠正常運行,所以大部分軟體直接提供原始碼進行編譯安裝。 2、方便定制,滿足不同的需求。 3.方便運維、開發人員維護;源碼是可以打包二進位的,但是對於這個軟體的打包都會有一份代價不小的額外工作,包括維護,所以如果是源碼的話,軟體產商會直接維護。

linux為什麼要編譯原始碼

本教學操作環境:linux7.3系統、Dell G3電腦。

linux為什麼要編譯原始碼

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

  • 滿足不同的運行平台,我們Linux髮型版本眾多,但是每個版本採用的軟體或核心版本都不一樣,而我們的二進位套件所依賴的環境不一定能夠正常運行,所以大部分軟體直接提供原始碼!

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

  • 方便運維、開發人員維護,我們的原始碼是可以打包二進位的,但是對於這個軟體的打包都會有一份代價不小的額外工作,包括維護,所以如果是原始碼的話,軟體產商會直接維護,但是如果是二進位的話,一般都是Linux發行商提供。

linux編譯原始碼教學

Linux上幾乎所有的軟體都經過了GPL授權,因此幾乎所有的軟體都會提供原始碼。

而一個軟體要在Linux上執行,必須是二進位文件,因此當我們拿到軟體原始碼後,需要將它編譯成二進位檔案才能在Linux上運行。

1、軟體編譯過程

將原始碼編譯成可供Linux執行的二進位檔案一共需要兩步驟:

  • 使用gcc編譯器將原始碼編譯成目標檔案

  • #再次使用gcc編譯器將目標檔案連結成二進位檔案





  • 這過程看似簡單,其實不然。一個軟體的原始碼往往被封裝在多個原始檔中,此外這些檔案有錯綜複雜的依賴關係,編譯需要嚴格按照指定的順序進行,這無疑增加了編譯的難度。還好make指令可以幫助我們簡化編譯過程。

    整個編譯過程被濃縮在Makefile檔案中(告訴make指令需要怎麼去編譯和連結程式),當執行make指令時,make會去目前目錄中尋找Makefile文件,並根據該檔案中的要求完成整個編譯過程。
  • 而Makefile檔案是由configure指令產生。執行configure指令時,configure會根據目前系統環境動態產生一個適合本系統的Makefile文件,供make指令使用。


  • 2、Linux原始碼安裝步驟

#取得原始碼

將軟體的原始碼下載至/usr/ local/,並解壓縮。

查看INSTALL與README文件

解壓縮後查看INSTALL與README文件,這兩個文件中詳細介紹了本軟體的安裝方法和注意事項。

建立Makefile檔案執行configure指令,產生Makefile檔。

編譯執行make clean;make指令將原始碼編譯成二進位檔。

PS:make clean指令用來清除上一次編譯產生的目標檔。這個步驟可有可無,但為了確保編譯的成功,還是加上為好。防止因軟體中含有殘留的目標檔案而導致編譯失敗。

安裝

執行make install指令將上一個步驟編譯好的二進位檔安裝到指定的目錄中去。

###3、安裝示範################1)進入/usr/local/,並建立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)執行configure,產生Makefile檔案######
./configure --prefix=/usr/local/memcached/
登入後複製
###此時目前目錄下將會產生一個Makefile檔。 #########注意:–prefix參數指定軟體安裝目錄。執行make install指令時,會將軟體安裝在此路徑中,如果不指定該參數,不指定prefix,可執行檔預設放在/usr /local/bin,庫檔預設放在/usr/local/lib ,設定檔預設放在/usr/local/etc。其它的資源檔案放在/usr /local/share。 ############5)執行make,從Makefile讀取指令,編譯原始碼######
make
登入後複製

此时make会读取Makefile文件,将源码编译成二进制文件,并存放在当前目录下。

执行这一步之前可以先进行清理作业:

make clean && make uninstall
登入後複製

6)执行make install,将软件安装至指定目录

make install
登入後複製

此时二进制文件会被安装到先前configure prefix参数设置的路径中去。
安装完成!

4、cmake命令(了解)

cmake就是一个与make同级别的编译工具,只不过它依靠的不是Makefile作为编译规则,而是根据CMakeLists.txt来编译的。
CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。

CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。
如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。

相关推荐:《Linux视频教程

以上是linux為什麼要編譯原始碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

無法以 root 身份登錄 mysql 無法以 root 身份登錄 mysql Apr 08, 2025 pm 04:54 PM

無法以 root 身份登錄 MySQL 的原因主要在於權限問題、配置文件錯誤、密碼不符、socket 文件問題或防火牆攔截。解決方法包括:檢查配置文件中 bind-address 參數是否正確配置。查看 root 用戶權限是否被修改或刪除,並進行重置。驗證密碼是否準確無誤,包括大小寫和特殊字符。檢查 socket 文件權限設置和路徑。檢查防火牆是否阻止了 MySQL 服務器的連接。

C語言條件編譯:新手入門到實戰應用的詳盡指南 C語言條件編譯:新手入門到實戰應用的詳盡指南 Apr 04, 2025 am 10:48 AM

C語言條件編譯是一種根據編譯時條件選擇性編譯代碼塊的機制,入門方法有:使用#if和#else指令根據條件選擇代碼塊。常用條件表達式包括STDC、_WIN32和linux。實戰案例:根據操作系統打印不同消息。根據系統位數使用不同的數據類型。根據編譯器支持不同的頭文件。條件編譯增強了代碼的可移植性和靈活性,使其適應編譯器、操作系統和CPU架構變化。

Linux的5個基本組件是什麼? Linux的5個基本組件是什麼? Apr 06, 2025 am 12:05 AM

Linux的五個基本組件是:1.內核,管理硬件資源;2.系統庫,提供函數和服務;3.Shell,用戶與系統交互的接口;4.文件系統,存儲和組織數據;5.應用程序,利用系統資源實現功能。

MySQL安裝在特定係統版本上報錯的解決途徑 MySQL安裝在特定係統版本上報錯的解決途徑 Apr 08, 2025 am 11:54 AM

MySQL安裝報錯的解決方法是:1.仔細檢查系統環境,確保滿足MySQL的依賴庫要求,不同操作系統和版本需求不同;2.認真閱讀報錯信息,根據提示(例如缺少庫文件或權限不足)採取對應措施,例如安裝依賴或使用sudo命令;3.必要時,可嘗試源碼安裝並仔細檢查編譯日誌,但這需要一定的Linux知識和經驗。最終解決問題的關鍵在於仔細檢查系統環境和報錯信息,並參考官方文檔。

mysql 無法啟動怎麼解決 mysql 無法啟動怎麼解決 Apr 08, 2025 pm 02:21 PM

MySQL啟動失敗的原因有多種,可以通過檢查錯誤日誌進行診斷。常見原因包括端口衝突(檢查端口占用情況並修改配置)、權限問題(檢查服務運行用戶權限)、配置文件錯誤(檢查參數設置)、數據目錄損壞(恢復數據或重建表空間)、InnoDB表空間問題(檢查ibdata1文件)、插件加載失敗(檢查錯誤日誌)。解決問題時應根據錯誤日誌進行分析,找到問題的根源,並養成定期備份數據的習慣,以預防和解決問題。

mysql 可以在 android 上運行嗎 mysql 可以在 android 上運行嗎 Apr 08, 2025 pm 05:03 PM

MySQL無法直接在Android上運行,但可以通過以下方法間接實現:使用輕量級數據庫SQLite,由Android系統自帶,無需單獨服務器,資源佔用小,非常適合移動設備應用。遠程連接MySQL服務器,通過網絡連接到遠程服務器上的MySQL數據庫進行數據讀寫,但存在網絡依賴性強、安全性問題和服務器成本等缺點。

mySQL下載完安裝不了 mySQL下載完安裝不了 Apr 08, 2025 am 11:24 AM

MySQL安裝失敗的原因主要有:1.權限問題,需以管理員身份運行或使用sudo命令;2.依賴項缺失,需安裝相關開發包;3.端口衝突,需關閉佔用3306端口的程序或修改配置文件;4.安裝包損壞,需重新下載並驗證完整性;5.環境變量配置錯誤,需根據操作系統正確配置環境變量。解決這些問題,仔細檢查每個步驟,就能順利安裝MySQL。

無法從終端訪問 mysql 無法從終端訪問 mysql Apr 08, 2025 pm 04:57 PM

無法從終端訪問 MySQL 可能是由於:MySQL 服務未運行;連接命令錯誤;權限不足;防火牆阻止連接;MySQL 配置文件錯誤。

See all articles