《手把手教你構建本身的 Linux 系統》學習筆記(3)

須要注意的是,製做操做系統權限全程都要用 root操作系統

pushd 和 popd

爲了方便目錄管理,因此出現了這種兩個命令,他們的原理就是利用堆棧來實現目錄管理。code

這兩個命令,pushd 負責將指定的目錄壓入堆棧,語法以下編譯

pushd 你想要壓入堆棧的命令

popd 負責將壓入堆棧的目錄彈出去,使用的後進先出的原則。基礎

如何利用 configure 文件來進行配置?

通常 Linux 的源代碼的編譯安裝等都須要進行配置,這個配置的做用就是檢測當前的運行環境是怎樣的,究竟適合開啓軟件的什麼功能。原理

而且你能夠在配置的時候,指定你須要的配置選項,好比說要不要編譯靜態庫之類的。軟件

配置的過程通常是使用軟件包目錄中的 configure 文件來進行的,而後添加參數來進行功能或者選項的設置。配置

例如:file

./configure --prefix=/tools --enable-shared

這裏的 prefix 是指定編譯生成的文件的目錄在哪裏

配置文件的參數

make 和 makefile

make 這個命令是根據 makefile 來自動執行一些操做。權限

在通過正確的配置過程後,通常就會生辰慣用語編譯和安裝使用的 Makefile 文件了,make 命令能夠經過該文件來進行源代碼的編譯和安裝等操做。語法

通常的編譯過程使用 amke 命令就能夠完成了,命令以下:

make

而通常的安裝過程經過以下的命令來進行:

make install

其中 install 是存在於 Makefile 中的一個標記,make 命令能夠根據這個標記中所設置的流程化內容來進行處理。

編譯過程,雖然沒有任何的指定標記,可是實際上 make 命令會從 Makefile 中查找 all 標記,而且根據該標記的流程來進行處理。

在 Makefile 中能夠有不少的標記,不一樣的標記能夠設置一組操做流程,經過 make 自帶的參數就能夠去執行這些操做,所以 Makefile 的做用不止是侷限於編譯軟件包,不少流程化的工做都是可使用 Makefile 配合 make 命令來完成的,可是通常 make 命令用於軟件包的編譯安裝工做。

雖然同一個標記在不一樣的軟件包中的含義是不同的,可是通常仍是有約定俗稱的流程標記。

常見的編譯標記

須要注意點的一點

並非全部的軟件包都須要編譯過程,軟件包的安裝過程也可能只須要複製命令就好了,相似 mac bundle。

判斷 make 命令是否正確結束的方法

有兩種方法,一種是使用命令

echo $?

若是返回的是 0 就表示正確,若是是非零就表示錯誤。

另一種是觀察。

當你用 make 命令編譯的時候,若是發現輸出的一堆文字裏,有 error 字樣,就說明 make 失敗了。

2>&1 是啥意思?

2> 這個表明將錯誤輸出流。

&1 表明正確輸出流

2>&1 表明將錯誤輸出流,合併正確輸出流,也就是說,正確輸出和錯誤輸出都有了,信息完整。

由於默認狀況下,具體的錯誤信息輸出是不會顯示出來的。

如何判斷軟件包裏面安裝的文件?

經過指定 make 安裝的目錄來進行指定,只要你將全部的安裝文件都安裝到制定的目錄中,這樣只要看一下這個目錄就能夠知道這個軟件包所安裝的文件了。

也就是利用 make 的一個參數「DESTDIR」,該參數在 make install 中進行制定。

DESTDIR 一直是被默認實用的,若是不專門制定,DESTDIR 被定義爲空,不會影響實際的安裝路徑,好比制定某個軟件包的 prefix 參數爲 /usr 那麼通常狀況下 make install 是將文件以 /usr 爲基礎目錄來進行安裝的,而實際上安裝的目錄是以 ${DESTDIR}${prefix} 這樣的形式來處理的。

若是 DESTDIR 沒有制定,那麼就等因而 ${prefix} 因此就安裝到了 /usr 目錄下了,若是 DESTDIR 被指定爲非空的目錄,那麼安裝程序就把文件安裝在這個目錄下的 ${prefix} 也就是默認的 /usr 目錄下。

並非全部的軟件包均可以經過設置 DESTDIR 這個參數來制定目錄的

有些會使用 ROOT 還有寫軟件包會使用 PREFIX 來制定,因此你若是要指定目錄的話,必定要查看軟件包中的說明文件來了解一下,也能夠只直接查看 Makefile 是否認義了 DESTDIR 活着其餘幾個常見的目錄制定參數來判斷是否支持制定目錄安裝。

相關文章
相關標籤/搜索