Linux下動態庫、靜態庫的編譯小記

來源:互聯網
上載者:User

動態庫的編譯:

g++ -Wall -fPIC -shared -o DataLog.so DataLog.cpp -I ./ -lpthread -L ../lib -llog4cpp

其中:-shared 指出編譯、連結的目標是一個.so的動態庫

         -fPIC 對於64位平台是必需的

 

靜態庫的編譯過程:

g++ -Wall -static -o DataLog.o -c DataLog.cpp -I ./

其中: -c 是只做編譯,不做連結的選項,編譯的結果是一個.o檔案

 

用.o建立靜態庫:

ar rscv libDataLog.a DataLog.o

 

 

以下轉自:http://blog.csdn.net/whyacinth/archive/2007/11/16/1889048.aspx

**********************gcc/egcs 的主要選項*********
gcc 命令的常用選項
選項 解釋
-ansi 只支援 ANSI 標準的 C 文法。這一選項將禁止 GNU C 的某些特色,
例如 asm 或 typeof 關鍵詞。
-c 只編譯並產生目標檔案。
-DMACRO 以字串“1”定義 MACRO 宏。
-DMACRO=DEFN 以字串“DEFN”定義 MACRO 宏。
-E 只運行 C 先行編譯器。
-g 產生調試資訊。GNU 調試器可利用該資訊。
-IDIRECTORY 指定額外的標頭檔搜尋路徑DIRECTORY。
-LDIRECTORY 指定額外的函數庫搜尋路徑DIRECTORY。
-lLIBRARY 串連時搜尋指定的函數庫LIBRARY。
-m486 針對 486 進行代碼最佳化。
-o FILE 產生指定的輸出檔案。用在產生可執行檔時。
-O0 不進行最佳化處理。
-O 或 -O1 最佳化產生代碼。
-O2 進一步最佳化。
-O3 比 -O2 更進一步最佳化,包括 inline 函數。
-shared 產生共用目標檔案。通常用在建立共用庫時。
-static 禁止使用共用串連。
-UMACRO 取消對 MACRO 宏的定義。
-w 不產生任何警告資訊。
-Wall 產生所有警告資訊。

 

 

 

########建立和使用共用庫#########
特殊的編譯和串連選項
-D_REENTRANT 使得前置處理器符號 _REENTRANT 被定義,這個符號啟用一些宏特性。
-fPIC 選項產生位置獨立的代碼。由於庫是在啟動並執行時候被調入,因此這個
選項是必需的,因為在編譯的時候,裝入記憶體的地址還不知道。如果
不使用這個選項,庫檔案可能不會正確運行。
-shared 選項告訴編譯器產生共用庫代碼。
-Wl,-soname -Wl 告訴編譯器將後面的參數傳遞到連接器。而 -soname 指定了
共用庫的 soname。
# 可以把庫檔案拷貝到 /etc/ld.so.conf 中列舉出的任何目錄中,並以
root 身份運行 ldconfig;或者
# 運行 export LD_LIBRARY_PATH='pwd',它把當前路徑加到庫搜尋路徑中去。

 

 

ldconfig命令的用途,主要是在預設搜尋目錄(/lib和/usr/lib)以及動態庫設定檔/etc/ld.so.conf內所列的目錄下,搜尋
出可共用的動態連結程式庫(格式如前介紹,lib*.so*),進而建立出動態裝入程式(ld.so)所需的串連和快取檔案.快取檔案預設為/etc
/ld.so.cache,此檔案儲存已排好序的動態連結程式庫名字列表.

 

ldd 用來顯示執行檔案需要哪些共用庫, 共用庫裝載管理器在哪裡找到了需要的共用庫.

 

另外參考Zcanoe 在chinaunix的文章http://os.chinaunix.net/a2007/1015/976/000000976498.shtml

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.