linux下原始碼安裝軟體

2021-08-02 02:14:29 字數 2435 閱讀 3889

make與configure

當執行 make 時,make 會在當時的目錄下搜尋 makefile (or makefile) 這個檔案,而 makefile 裡面則記錄了原始碼如何編譯的詳細資訊! make 會自動的判別原始碼是否經過變動了,而自動更新執行檔。

因為軟體商都是針對unix-like進行開發,所以他會寫一套偵測作業系統來檢查環境

壓縮檔案安裝

其中最重要的是那個install 或者是 readme這兩個檔案,通常你只要能夠參考這兩個檔案, tarball 軟體的安裝是很簡單的

make clean

make 會讀取 makefile 中關於 clean 的工作。這個步驟不一定會有,但是希望執行一下,因為他可以去除目標檔案!因為誰也不確定原始碼裡面到底有沒有包含上次編譯過的目標檔案 (*.o) 存在,所以當然還是清除一下比較妥當的。 至少等一下新編譯出來的執行檔我們可以確定是使用自己的機器所編譯完成的嘛!

make

make 會依據 makefile 當中的預設工作進行編譯的行為!編譯的工作主要是進行 gcc 來將原始碼編譯成為可以被執行的 object files ,但是這些 object files 通常還需要一些函式庫之類的 link 後,才能產生乙個完整的執行檔!使用 make 就是要將原始碼編譯成為可以被執行的可執行檔,而這個可執行檔會放置在目前所在的目錄之下, 尚未被安裝到預定安裝的目錄中;

make install

通常這就是最後的安裝步驟了,make 會依據 makefile 這個檔案裡面關於 install 的專案,將上乙個步驟所編譯完成的資料給他安裝到預定的目錄中,就完成安裝啦!

以上乙個步驟不成功,後續步驟都不會成功

./configure是用來檢測你的安裝平台的目標特徵的。比如它會檢測你是不是有cc或gcc,並不是需要cc或gcc,它是個shell指令碼。

這一步一般用來生成makefile,為下一步編譯作準備。可以通過在其後加引數來對安裝進行控制。

./configure –prefix=/usr
意思是將該軟體安裝在 /usr 下面,執行檔案就會安裝在 /usr/bin (而不是預設的 /usr/local/bin),資源檔案就會安裝在 /usr/share(而不是預設的/usr/local/share)

--bindir=dir :指定二進位制檔案的安裝位置,這裡的二進位制檔案定義為可以被使用者直接執行的程式。

--sbindir=dir:指定超級二進位制檔案的安裝位置。這是一些通常只能由超級使用者執行的程式。

--datadir=dir:指定通用資料檔案的安裝位置。

make,這一步就是編譯,大多數的源**包都經過這一步進行編譯(當然有些perl或python編寫的軟體需要呼叫perl或python來進行編譯)。如果 在 make 過程中出現 error ,你就要記下錯誤**(注意不僅僅是最後一行),然後你可以向開發者提交 bugreport(一般在 install 裡有提交位址),或者你的系統少了一些依賴庫等,這些需要自己仔細研究錯誤**。

make 的執行過程如下:

最常見的幾個目標:

make all:編譯程式、庫、文件等(等同於make)

make install:安裝已經編譯好的程式。複製檔案樹中到檔案到指定的位置

make unistall:解除安裝已經安裝的程式。

make clean:刪除由make命令產生的檔案

make distclean:刪除由./configure產生的檔案

make check:測試剛剛編譯的軟體(某些程式可能不支援)

make installcheck:檢查安裝的庫和程式(某些程式可能不支援)

make dist:重新打包成packname-version.tar.gz

在編譯的時候,gcc個版本之間存在著差異,所以有時候用不同版本的gcc去編譯,有的版本能編譯成功,有的就編譯失敗,這樣的錯誤只是版本問題。

另外在make的時候會出現的另乙個錯就是比較難辦的,遇到這樣的問題就只能憑經驗查詢原因,比如說某個標頭檔案沒有找到,這個時候就要順著出錯的位置一行一行的往上找,比如顯示******.h………no such file or directory,說明缺少標頭檔案,或者找到你覺得有價值的錯誤資訊去搜尋引擎裡搜尋,從這裡可能會找到對你有用的資訊,最重要的就是在安裝之前仔細的去看readme、install檔案,這兩個檔案裡會告訴你程式應該怎樣去安裝,需要什麼依賴檔案等等。有的時候在編譯時不知道是否編譯成功,而在沒有編譯成功就去make install肯定會出錯,這樣就增加了問題的複雜性,俗話說的好「道高一尺魔高一丈」,這樣我們可以在make結束的時候通過一條命令來檢查是否成功編譯:

echo  $?
輸入這條命令回車後,輸出的結果是0,那麼就說明成功編譯,否則就是出錯了,echo $?表示檢查上一條命令的退出狀態,程式正常退出返回0!

Linux下原始碼包安裝軟體

linux下原始碼安裝一般包括以下步驟 加粗樣式獲取原始碼 解壓建立makefile檔案 生成makefile檔案 編譯執行make clean make命令將原始碼編譯成二進位制檔案。下來我們看看編譯過程的實現是怎麼樣的?將原始碼編譯成可供linux執行的二進位制檔案一共需要兩步 1.使用gcc編...

linux下的軟體安裝和配置 原始碼安裝

一 安裝步驟 分析安裝平台環境 編譯軟體 安裝軟體 下面以安裝nginx為例 wget 解壓tar xzf nginx.zip 檢查平台環境,並指定安裝目錄 此過程會有一些依賴,比如 gcc openssl devel pcre devel和zlib devel,可以使用yum install 進行...

Linux 原始碼包安裝軟體

在linux bsd系統中,軟體包主要以兩種形式出現 二進位製包以及源 包。之前一直說的rpm包就是屬於二進位製包,也就是已經編譯好的軟體包.這裡說源 包則主要適用於自由軟體的安裝,使用者需要自己編譯它們。一般是我們手動指定安裝在 usr local下,相當於windows下是program fil...