編譯靜態庫編譯動態庫

2022-07-26 14:48:21 字數 781 閱讀 6533

編譯靜態庫

cr標誌告訴ar將object檔案封裝(archive),我們可以使用nm -s 命令來檢視.a檔案的內容

ar -cr libmyhello.a hello.o (或-cvr )

編譯動態庫

$gcc -c -fpic test1.c

$gcc -c -fpic test2.c

-fpic告訴gcc將源**編譯成共享的object檔案,pic(position-independent code)非位置依賴性**。

$gcc -shared -fpic -o libtest.so test1.o test2.o

方法一:在配置檔案/etc/ld.so.conf中指定動態庫搜尋路徑。

可以通過編輯配置檔案/etc/ld.so.conf來指定動態庫的搜尋路徑,該檔案中每行為乙個動態庫搜尋路徑。每次編輯完該檔案後,都必須執行命令ldconfig使修改後的配置生效。我們通過例1來說明該方法。

方法二:通過環境變數ld_library_path指定動態庫搜尋路徑。

通過設定環境變數ld_library_path也可以指定動態庫搜尋路徑。當通過該環境變數指定多個動態庫搜尋路徑時,路徑之間用冒號":"分隔。

方法三:在編譯目標**時指定該程式的動態庫搜尋路徑。

還可以在編譯目標**時指定程式的動態庫搜尋路徑。這是通過gcc 的引數"-wl,-rpath,"指定(如例3所示)。當指定多個動態庫搜尋路徑時,路徑之間用冒號":"分隔。

方法四:預設的動態庫搜尋路徑/lib;

方法五:預設的動態庫搜尋路徑/usr/lib。

gcc編譯靜態庫 動態庫

今天,乙個同事編譯靜態庫,我也趁此機會在溫習一下,先google一下,然後在自己實驗。首先,在網上抄個例子,內容如下 建靜態庫 hellos.h ifndef hello s h define hello s h void prints char str endif hellos.c include...

c Linux gcc編譯 靜態庫 動態庫

預處理 i 編譯 s彙編檔案 彙編 o二進位制機器碼 鏈結 可執行檔案 預處理 預處理器將原始檔對應的巨集展開 gcc e test.c o test.i 編 譯 gcc將c檔案編譯成彙編檔案 gcc s test.i o test.s 匯 編 利用as命令 彙編器 將彙編檔案編譯成機器碼 二進位制...

GCC 編譯 靜態庫 動態庫

工作流程 命名格式 lib 庫的名字 so製作 第一步 得到 o檔案 引數 fpic表示生成與位置無關 gcc i.include fpic c c第二步 建立動態庫 shared 製作動態庫 o 重新命名生成的新檔案 gcc shared o lib so o使用 命名格式 lib 庫的名字 a製...