須要注意的是,製做操做系統權限全程都要用 root操作系統
爲了方便目錄管理,因此出現了這種兩個命令,他們的原理就是利用堆棧來實現目錄管理。code
這兩個命令,pushd 負責將指定的目錄壓入堆棧,語法以下編譯
pushd 你想要壓入堆棧的命令
popd 負責將壓入堆棧的目錄彈出去,使用的後進先出的原則。基礎
通常 Linux 的源代碼的編譯安裝等都須要進行配置,這個配置的做用就是檢測當前的運行環境是怎樣的,究竟適合開啓軟件的什麼功能。原理
而且你能夠在配置的時候,指定你須要的配置選項,好比說要不要編譯靜態庫之類的。軟件
配置的過程通常是使用軟件包目錄中的 configure 文件來進行的,而後添加參數來進行功能或者選項的設置。配置
例如:file
./configure --prefix=/tools --enable-shared 這裏的 prefix 是指定編譯生成的文件的目錄在哪裏
make 這個命令是根據 makefile 來自動執行一些操做。權限
在通過正確的配置過程後,通常就會生辰慣用語編譯和安裝使用的 Makefile 文件了,make 命令能夠經過該文件來進行源代碼的編譯和安裝等操做。語法
通常的編譯過程使用 amke 命令就能夠完成了,命令以下:
make
而通常的安裝過程經過以下的命令來進行:
make install
其中 install 是存在於 Makefile 中的一個標記,make 命令能夠根據這個標記中所設置的流程化內容來進行處理。
編譯過程,雖然沒有任何的指定標記,可是實際上 make 命令會從 Makefile 中查找 all 標記,而且根據該標記的流程來進行處理。
在 Makefile 中能夠有不少的標記,不一樣的標記能夠設置一組操做流程,經過 make 自帶的參數就能夠去執行這些操做,所以 Makefile 的做用不止是侷限於編譯軟件包,不少流程化的工做都是可使用 Makefile 配合 make 命令來完成的,可是通常 make 命令用於軟件包的編譯安裝工做。
雖然同一個標記在不一樣的軟件包中的含義是不同的,可是通常仍是有約定俗稱的流程標記。
並非全部的軟件包都須要編譯過程,軟件包的安裝過程也可能只須要複製命令就好了,相似 mac bundle。
有兩種方法,一種是使用命令
echo $? 若是返回的是 0 就表示正確,若是是非零就表示錯誤。
另一種是觀察。
當你用 make 命令編譯的時候,若是發現輸出的一堆文字裏,有 error 字樣,就說明 make 失敗了。
2> 這個表明將錯誤輸出流。
&1 表明正確輸出流
2>&1 表明將錯誤輸出流,合併正確輸出流,也就是說,正確輸出和錯誤輸出都有了,信息完整。
由於默認狀況下,具體的錯誤信息輸出是不會顯示出來的。
經過指定 make 安裝的目錄來進行指定,只要你將全部的安裝文件都安裝到制定的目錄中,這樣只要看一下這個目錄就能夠知道這個軟件包所安裝的文件了。
也就是利用 make 的一個參數「DESTDIR」,該參數在 make install 中進行制定。
DESTDIR 一直是被默認實用的,若是不專門制定,DESTDIR 被定義爲空,不會影響實際的安裝路徑,好比制定某個軟件包的 prefix 參數爲 /usr 那麼通常狀況下 make install 是將文件以 /usr 爲基礎目錄來進行安裝的,而實際上安裝的目錄是以 ${DESTDIR}${prefix} 這樣的形式來處理的。
若是 DESTDIR 沒有制定,那麼就等因而 ${prefix} 因此就安裝到了 /usr 目錄下了,若是 DESTDIR 被指定爲非空的目錄,那麼安裝程序就把文件安裝在這個目錄下的 ${prefix} 也就是默認的 /usr 目錄下。
有些會使用 ROOT 還有寫軟件包會使用 PREFIX 來制定,因此你若是要指定目錄的話,必定要查看軟件包中的說明文件來了解一下,也能夠只直接查看 Makefile 是否認義了 DESTDIR 活着其餘幾個常見的目錄制定參數來判斷是否支持制定目錄安裝。