Linux gcc 製作動 靜態鏈結庫

2021-10-10 23:11:52 字數 637 閱讀 3170

以 math.c為例

gcc -c math.c

ar rcs libmath.a math.o

ar命令 將多個檔案打包成乙個備份檔案

引數r:用來替換庫中已有的目標檔案,或加入新的目標檔案

引數c: 表示建立乙個庫,不管庫是否存在,都將建立

引數s:用來建立目標檔案的索引,這在建立較大的庫時能夠提高速度

靜態鏈結庫製作好之後的使用

gcc main.c -lmath -o main
以math.c為例

gcc -fpic -c math.c 

# -fpic (position-independent code),用於編譯階段,產生與位置無關的**

gcc -shared math.o -o libmath.so

# -shared 用於鏈結階段,生成可動態載入的so庫

gcc main.c -lmath -o main
注意:需要將生成的libmath.so放到 /usr/lib 目錄之下,或者是在執行時設定 ld_library_path 環境變數。

Linux GCC編譯使用動態 靜態鏈結庫

在windows下動態鏈結庫是以.dll字尾的檔案,二在linux中,是以.so作字尾的檔案。動態鏈結庫的好處就是節省記憶體空間。1 linux下建立動態鏈結庫 在使用gcc編譯程式時,只需加上 shared選項即可,這樣生成的執行程式即為動態鏈結庫。例如有檔案 hello.c x.h main.c...

Linux 下編譯鏈結動靜態庫

linux 版本是 red hat 9 核心版本是 2.4.18 輸入 which gcc 檢視 gcc 的位置在 usr bin gcc gcc v 檢視 gcc 編譯前的配置資訊 prefix usr 說明了安裝目錄 沒有 with headers 說明預設的 include 就在安裝目錄下 所...

linux gcc鏈結選項詳解

i 大寫i l 大寫l l 小寫l 1 l i 大寫i 顯示指定標頭檔案的搜尋路徑。i home myinclude 表示 home myinclude目錄作為第乙個尋找標頭檔案的目錄,尋找的順序是 home myinclude usr include usr local include 2 l 大...