02gcc入門(下)

來源:互聯網
上載者:User

標籤:使用   os   io   strong   檔案   ar   代碼   on   

n  基本架構:

a)         外部庫的使用

b)         靜態庫與共用庫的區別

c)         靜態庫的產生

d)         共用庫的產生

 

2.1外部庫的使用

2.1.1庫檔案的特點:

           1)庫檔案實際上是一些.o檔案的打包;

2)是按照可重用的原則編寫的;

3)通常由一組相互關聯的函數構成;

           4)軟體的可維護效能好,若軟體升級的話,通常只需修改庫代碼,而不用修改使用庫的代碼(只要使用庫的介面沒有改變)。

2.2.2標頭檔與庫檔案的系統存放位置

         標頭檔:/usr/include   /usr/local/include

         庫檔案:/usr/lib       /usr/local/lib

2.2.3 外部庫的使用

         -lname  表示要連結libname.so 或者libname.a 庫檔案

                 如果靜態庫和共用庫均存在,則系統會優先連結共用庫。

 

2.2靜態庫與共用庫的區別

 

    靜態庫(.a)的特點:

1)程式在連結的時候把所需要庫中相應的函數代碼連結到可執行檔中;

2)啟動並執行時候不再需要靜態庫;

3)若多個程式使用同一個庫,則需要庫中相關代碼的多個copy,所以對記憶體和磁碟空間耗費較大。

    共用庫(.so)的特點:

1)  當程式運行時,由作業系統將庫代碼從磁碟載入到記憶體中,這個過程叫做動態連結;

2)  啟動並執行時候需要共用庫的存在;

3)若多個程式使用同一個共用庫,則當程式啟動並執行時候,只需向記憶體載入一份庫代碼,多個程式共用使用同一份庫;

又因為可執行程式中僅僅包含它用到的函數入口地址的一個表,而不是庫代碼的拷貝;

所以節省了記憶體和磁碟空間;

                4)因為可執行程式中沒有庫代碼的相關拷貝,所以維護效能好。

              

2.3靜態庫的產生

 

2.3.1靜態庫的產生

   Ar  rcs  libname.a  name.o

   Rcs表示(replace、create、save)

   *   Ar  t        查詢一個靜態庫中有多少個.o檔案

2.3.2庫的搜尋路徑:

1)  從左至右搜尋 –I  –L 指定的目錄;   (最好使用第1種方法來設定)

2)  由環境變數指定的目錄

設定方法:給設定檔(~/.bash_profile)中相應的環境變數添加搜尋路徑:

export   C_INCLUDE_PATH=……     

export   CPP_INCLUDE_PATH=……

                    export   LIBRARY_PATH=……

然後執行該設定檔即可。

3)  系統預設的搜尋目錄

/usr/include     /usr/lib

 

2.4共用庫的產生

 

2.4.1共用庫的產生

Gcc   –shared  -fPIC  hello.o  –o  libhello.so

fPIC:  用來產生位置無關碼(position independent code)

 

2.4.2運行共用庫需要做的一些配置(2種方法)

     1)拷貝.so檔案到系統共用庫路徑下:  /usr/lib

     2) 設定環境變數: LD_LIBRARY_PATH  (最好使用第二種方法)

 

l   ldd  + 可執行檔名: 查詢該程式在執行的時候需要載入哪些共用庫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.