2010年4月8日 星期四

archive 程式 ar 簡介 with ranlib

ar ( archive ) 以下節錄自 Linux man page

ar - create, modify, and extract from archives
ar 這支程式可以對 archive(靜態函式庫) 做以下的動作,
create(建造),modify(修改),extract(擷取)

以下列出幾個常用的 options 解釋:

d: delete
=> 將 files 從 archive 中移除
r: replace
=> 將 files 以取代的方式插入 archive 中
u: update
=> 通常r option 是取代所有,但u option 僅會將較 archive中新的 files 插入
v: verbose
=> 顯示執行情況以及額外的資訊

ar uv mylib.a first.o second.o
上述指令就是將兩個obj 檔建立成一個 mylib.a,並且顯示建立過程的執行資訊


ranlib - generate index to archive

ranlib generates an index to the contents of an archive and stores it in the archive. The index lists each symbol defined by a member of an archive that is a relocatable object file.
ranlib這支程式會產生一個index檔,存的是archive的組成內容,並且將這個index也塞入archive中。index 會列出每個 archive 中的 member 所定義的 symbol,這些 member 說穿了就是 relocatable object file (可重定位的目的檔)。

可以使用 nm -s 或者 nm --print-armap 來列出這個 index

跑這支程式的作用是增加 linking 到 library 的速度,而且可以讓在 library 內的 routines 可以互相呼叫,而不必顧慮到這些 routines 在 archive 中的擺置順序。

實際上,GNU ranlib 就是執行 ar -s

沒有留言:

張貼留言