LInux下C語言原始碼編譯的過程

2021-08-22 00:02:22 字數 1855 閱讀 1661

原始碼編譯的過程:原始碼–>預處理–>編譯–>彙編–>鏈結–>執行

大致可分為三步:./configure—>make—>make install

總的來說:make就做了編譯彙編的工作,他是根據makefile的檔案來編譯彙編的;而makefile是configure根據乙個叫做makefile.in的模板檔案生成的;makefile.in是由乙個叫automake的工具生成的,configure是由乙個叫autoconf的工具生成的。make install把編譯好的檔案複製到指定的目錄,說到底就是呼叫了install命令。

詳細的說(最近在安裝了nginx,所以就用nginx舉例):

這三步分別為:

1. ./configure [options]

--help:獲得其支援使用的選項

--prefix=/path/

to/somewhere:指定預設安裝位置;預設為/usr/local/;

--sysconfdir=/path/

to/somewhere:配置檔案安裝位置;

--enable-feature[=arg]:開啟指定特性以及安裝路徑;預設開啟時無須指定;

--disable-feature:關閉指定特性;預設關閉時無須指定;

--with-package[=arg]:安裝指定依賴包以及其安裝路徑;

--without-package:不安裝指定依賴包;

執行configure指令碼的作用:

①使用者可以通過選項傳遞引數給configure指令碼,以指定啟用的功能特性、安裝路徑等;而configure指令碼在執行的過程中會參考使用者的指定以及makefile.in檔案生成makefile檔案;

②檢查程式指定要啟用的功能特性所依賴到的外部環境。

—我們指定好安裝的路徑,加上自己決定的選項:嘗試第一次生成makefile檔案:

—我們發現這個過程並沒有進行下去,因為有原始碼編譯器gcc未安裝,安裝完成gcc後,我們再次生成makefile檔案:

—這次又有兩個依賴項pcre-devel和 openssl-devel,安轉完成後發現終於可以生成makefile檔案了!!

作用:make會執行真正的編譯操作,但make本身並不是編譯器,它只是乙個專案構建工具,make程式會根據執行configure指令碼所生成的makefile(makefile)檔案,並呼叫所需要用到的編譯器(gcc)來構建應用程式。

3. make install

作用:在前面的make程式執行之後,在當前目錄下會建立出已編譯完成的目標二進位制格式的應用程式(包括二進位制程式、庫檔案、配置檔案及幫助文件等),而make install則會執行安裝操作,即把當前目錄下已編譯好的程式包(二進位制程式、庫檔案、配置檔案及幫助文件等)複製到使用者指定的各個目錄下。

再補充幾點:

1. 上面make後,可以使用make clean將編譯引數清空,接著重新make;

2.上面configure發現錯誤,可以使用makedistclean,將configure引數全部清空,接著重新./configure–>make;

Linux下原始碼編譯libtorch

注意 不要編譯libtorch1.5.1 有記憶體洩漏問題,第三方庫 openmp 記憶體洩漏,而且rrelu也有記憶體洩漏,從pytorch1.6.0的bug fix中可知。參考官網 嘗試驗證。安裝依賴 conda install numpy ninja pyyaml mkl mkl includ...

Linux下原始碼編譯安裝Mysql

下面是在redhat 5.8下原始碼編譯安裝mysql5.6.12 1.首先檢視系統有沒有安裝mysql rpm qa grep mysql 如果系統上有mysql,先解除安裝 yum remove mysql 或者 rpm e mysql 2.安裝cmake tar zxvf cmake 2.8....

Linux下原始碼編譯安裝mariadb資料庫

環境 centos7 準備 mariadb 10.2.18.tar 資料庫安裝包 root centos7 4 rz transferring mariadb 10.2.18.tar.gz.第一步 建立mysql使用者 root centos7 4 useradd r s sbin nologin ...