linux軟件編譯安裝相關簡介

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

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

1)源碼:程序代碼,人類能夠看得懂的程序語言編程

2)編譯程序:源碼編譯後的機器能夠看得懂的代碼,一般以o做爲後綴緩存

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

3.make相關介紹:函數

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

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

是否有適合的編譯程序能夠編譯軟件的程序代碼加密

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

操做系統平臺是否適合本軟件,包括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:以文字形式來讀取檔案指紋。

相關文章
相關標籤/搜索