概述:
根據原始碼包中 makefile.in 檔案的指示,configure 指令碼檢查當前的系統環境和配置選項,在當前目錄中生成 makefile 檔案(還有其它本文無需關心的檔案),然後 make 程式就按照當前目錄中的 makefile 檔案的指示將源**編譯為二進位制檔案,最後將這些二進位制檔案移動(即安裝)到指定的地方(仍然按照 makefile 檔案的指示)。
configure過程:
此階段的主要目的是生成 makefile 檔案,是最關鍵的運籌帷幄階段,基本上所有可以對安裝過程進行的個性化調整都集中在這一步。
configure 指令碼能夠影響 makefile 中所有的內容,包括makefile 規則與 makefile 變數。
configure指令碼引數,最常用的就是--help,可以告知如何去使用configure選項。
make與makefile:
makefile包含了所有的規則和目標,而make則是為了完成目標而解釋makefile規則的工具。
makefile規則包含了檔案之間的依賴關係和更新此規則的所有需要的命令。
以ngx的makefile為例:
預設為建立二進位制檔案
clean
清除當前目錄下在 make 過程中產生的檔案。它不能刪除軟體包的配置檔案,也不能刪除 build 時建立的那些檔案。
install
完成程式的編譯並將最終的可執行程式、庫檔案等拷貝到指定的目錄。此種安裝一般不對可執行程式進行 strip 操作。
make install過程:
首先看看 make 的命令列語法:
make [options] [targets]
可以從make命令列語法中看出,targets 應該就是包含 check和install,install就是將二進位制檔案移動(安裝)到指定的地方(需按照 makefile 檔案的指示)。
Promise原始碼深入理解
promise的第一版實現 function mypromise constructor function reject reason 捕獲構造異常 try catch e mypromise.prototype.then function onfullfilled,onrejected var p...
Okhttp深入理解及原始碼解析
okhttpclient okhttpclient new okhttpclient 第一行 request request new request.builder url url build 第二行 call call okhttpclient.newcall request 第三行 1 建立 o...
深入理解AQS原始碼解析一
三 最後小結一下 一 概念 我們談到併發,就不得不談reentrantlock鎖 而談到reentrantlock鎖,不得不談一下abstractqueuedsynchronized aqs 類如其名,抽象的佇列式的同步器,aqs定義了一套多執行緒訪問共享資源的同步器框架,許多同步類實現都依賴於它,...