靜態庫管理工具 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 開發工具 中顯式指定了依賴,當你在另乙個工程中使用這個靜態庫的...