linux軟件編譯安裝相關簡介

1.linux下C程序的原始碼通常以c作爲後綴(cpp是C++的後綴,gcc會根據後綴來加載不同的鏈接庫,詳見:http://7613577.blog.51cto.com/7603577/1605240)。

2.程序編譯的幾個相關概念:

1)源碼:程序代碼,人類可以看得懂的程序語言

2)編譯程序:源碼編譯後的機器可以看得懂的代碼,通常以o作爲後綴

3)可執行文件:經過編譯程序編程二進制程序後,機器看得懂的可執行的檔案。

3.make相關介紹:

1)make指令執行後,會去找Makefile,通常軟件開發商都會寫一支偵測程序來偵測用戶的作業環境,以及該作業環境是否有軟件開發商所需要的其他功能,該偵測程序偵測完畢後,就會主動的建立這個Makefile的規則檔案,通常這支偵測程序的文件名爲configure或者config

2)偵測程序要偵測的內容有:

是否有適合的編譯程序可以編譯軟件的程序代碼

是否已經存在本軟件所需要的函式庫,或其他的相依軟件

操作系統平臺是否適合本軟件,包括linux的核心版本

核心表頭定義檔是否存在(驅動必須要的偵測)

3)同一款軟件在不同的平臺上安裝需要重新編譯。

4.gcc [-cO] [-l函式庫] [-L/函式庫目錄][Ipath] [-Wall] [-o targetfile] sourcefile:編譯程序,選項,

1)-c:編譯程序,生成*.o文件

2)-o:鏈接程序,產生可執行的文件,此時需要指定要生成的文件.

3)-O:可以優化程序,提高性能

4)-Wall:產生詳細的編譯信息

5)-l:加入某個函式庫,m代表libm.so這個動態鏈接庫

6)-L:後接路徑,表示函式庫要從哪裏去查找。

7)-I:後接include要查找的目錄

5.#include<stdio.h>:這句話的意思是將一些定義的數據由stdio.h這個檔案讀入,這包括printf的相關設定,這個檔案其實是放在/usr/include/stdio.h的。

6.make指令的優點:

1)簡化編譯時所需要下達的指令

2)若在編譯完成之後,修改某個原始碼檔案,則make僅會針對被修改了的檔案進行編譯,其他的Object file不會被更動。

3)最後可以依照相依性來更新執行檔。

7.makefile解讀:

1)基本格式:

target:目標文件1 目標文件2 

<tab> gcc -o 欲建立的執行文件 目標文件1 目標文件2 

2)target是我們要建立的信息,而且目標文件就是具有相關性的object files,那建立執行文件語法就是以<tab>按鍵開頭的那一行,命令行必須要以tab按鍵作爲開頭才行

3)makefile中用#代表註釋,<tab>必須在命令行的第一個字符,target與相依檔案(目標文件)之間以:隔開。

8.makefile中變量的基本語法:

1)變量與變量內容以=隔開,同時兩邊可以具有空格

2)變量左邊不可以具有<tab>

3)變量與變量內容在=兩邊不能具有:

4)在習慣上,變量最好以大寫字母爲主

5)運用變量時,以${變量}或$(變量)使用

6)在該shell的環境變量可以被套用,例如CFLAGS。

7)在指令模式也可以給予變量

9.當CFLAGS的內容指令列與makefile裏面並不相同時,取捨關係如下:

1)make指令列後面加上的環境變量爲優先

2)makefile裏面指定的環境變量第二

3)shell原本的環境變量第三。

10.一些特殊變量:$@代表目前的target。

11.tarball(壓縮包)軟件一般的安裝方式:

1)./configure:這個步驟是建立Makefile這個檔案,通常程序開發者會寫一支scripts來檢查linux系統,相關的軟件屬性等,經過偵測後,生成一個與本地環境適應的Makefile文件。

2)make clean:清除舊的編譯文件(*.o)

3)make:依據Makefile當中的預設進行編譯行爲。即將原始碼編譯爲可執行的文件,而這個可執行文件會放置在目前所在的目錄下,尚未被安裝到預定的目錄下。

4)make install:依據Makefile這個檔案關於install的項目,將上一個步驟產生的編譯完成的數據安裝到預定的目錄中。

12.動態與靜態函式庫

1)靜態函式庫:擴展名爲.a,這類函式庫在編譯的時候會直接整合到執行程序當中,所以一般該方式生成的可執行文件會比較大些。另外這類函式庫的最大優點就是可以獨立運行,不依賴於其他函式庫。但升級難度較大。

2)動態函式庫:擴展名.so,這類函式庫當執行檔要使用到函式庫的機制時,程序纔會讀取函式庫來使用,因此生成的文件會小一點。由於是動態讀取,因此該模式的函式庫獨立性較差,不過升級比較容易。

13.將動態函式庫加載到高速緩存中可以提高函式庫的存取效能,具體步驟爲:

1)首先,我們必須要在/etc/ld.so.conf裏面寫下想要讀入告訴緩存當中的動態函式庫所在的目錄(不是檔案)。

2)家下來則是利用ldconfig這個執行檔將/etc/ld.so.conf的資料讀入緩存當中。

3)同時也將數據記錄一份在/etc/ld.so.cache這個檔案中。

14.ldconfig [-f config] [-C cache] [-p]:將動態函數庫預先載入內存,參數:

1)-f:指定library函數庫的路徑(文件),默認是/etc/ld.so.conf

2)-C cache:指定cache的內容(文件名),默認/et/ld.so.cache

3)-p:列出目前所有函數庫資料內容(在/etc/ld.so.cache內的內容)

2.ldd [-vdr] [filename]:程序的動態函數庫解析,參數,

1)-v:列出所有內容信息

2)-d:重新將資料有遺失的link點顯示出來

3)-r:將ELF有關的錯誤顯示出來

3.md5sum/sha1sum [-bct] filename;md5sum/sha1sum [--status|--warn] --check filename:一種軟件安裝加密技術,參數,

1)-b:使用binary的讀檔方式,默認爲Windows/DOS 檔案型態的讀取方式。

2)-c:檢驗檔案指紋

3)-t:以文字形式來讀取檔案指紋。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章