靜態庫管理

2021-06-25 12:09:24 字數 1462 閱讀 6682

靜態庫管理工具 ar 和 ranlib

參考:《unix 系統與 軟體開發 》中國鐵道出版設 邵國金主編 第十章 程式設計基礎篇

ar的功能是靜態庫檔案的管理,可用於靜態庫的建立,模組新增,提取及刪除等,其用法如下:

ar [-] p [mod [relpos]   [ count ] ] archive [member ...]

其中:p 功能引數,mod 修飾引數,部分引數說明如下; 型別

引數意義

d從庫檔案中刪除模組

功能引數

m移動模組位置(與a,b和i 配合使用)

p顯示模組到內容到標準輸出

q快速追加模組到檔案到尾部(不檢查是否又重複模組

功能引數

r在庫檔案中插入模組(插入過程替換重名模組)

t列庫檔案中模組到列表

x從庫檔案中提取模組

a在指定模組後追加

b,i在指定模組前插入

修飾引數

c建立庫檔案

s為庫檔案建立或更新索引,ar -s libfile 和 ranlib libfile相同

s不建立符號表(若不建立,則在使用前必須使用ranlib 或ar -s 建立

v顯示工作過程資訊

ranlib 用於為剛建立到靜態庫建立符號索引表,基本用法:

ranlib archive ...

若在使用ar維護靜態庫時沒有使用-s選項,之後可不執行ranlib。

nm 用於顯示目標模組到符號或函式表,比如

nm file.o                            # 顯示目標模組file2.o中的函式名

建立靜態庫,需要以下過程:(1)編寫源**檔案;(2)由源**檔案生成.o目標檔案;(3)用ar命令將若干目標檔案生成靜態庫檔案。

例如:用file1.c 和 file.c 生成libfile.a的過程如下:

$: gcc -c file1.c file2.c                   # 生成目標檔案

$: ar -crv libfile.a file1.o file2.o     # 夠做靜態庫

$: ranlib libfile.a                             # 構建索引表(若建立庫時未使用-s,可不做此步)

$: ar -t libfile.a                              # 檢視庫中到模組

$:ar -x libfile.a file1.o                   # 提取file1.o模組(原件保留)

$:ar -d libfile.a file1.o                     # 從庫libfile.a中刪除file1.o模組

$:ar -r libfile.a file1.o                      # 向庫libfile.a中新增file1.o模組

對於非標準庫,在使用時需要使用-l指定庫名,-l指定庫檔案位置。

iOS靜態庫管理

解決一下幾個問題 1.生成device和simulator通用的.a檔案 2.debug版應用程式呼叫debug版.a,release版應用程式呼叫release版.a 由於ios生成的庫的屬性比較多,因此開發人員需要對靜態庫進行必要的管理。我只是提供了一種我認為比較不錯的辦法,可以相對提高一些效率...

打包靜態庫,合併靜態庫

ios靜態庫 a 和framework 合併靜態庫 1,開啟終端,輸入lipo create release iphoneos libsbjson.a release iphonesimulator libsbjson.a output combine libsbjson.a 其中release i...

Xcode 依賴管理帶來的靜態庫動態庫分析

最近整理一些專案以前依賴留下的問題,在使用 cocoapods 和 carthage 的時候引出了關於靜態庫和動態庫的思考,手動編譯靜態庫的朋友應該知道,如果自己編譯了乙個靜態庫,這個靜態庫依賴了 ios 自帶的庫,即使你在 xcode 開發工具 中顯式指定了依賴,當你在另乙個工程中使用這個靜態庫的...