題 什麼是ranlib?


我已經使用了一段時間的MacOSX系統,但直到最近才開始闖入膽量。我找到一個嚮導告訴我要運行'sudo ranlib /usr/local/lib/libjpeg.a'(安裝libjpeg)。我已經閱讀了ranlib手冊,並嘗試在線查看。我根本就不明白。我需要查看哪些資源才能了解更多信息,或者有人可以對其使用情況做出簡明扼要的解釋?提前致謝!


9
2018-03-25 14:58


起源




答案:


ranlib 添加或更新 目標文件 在一個 靜態庫。鏈接器可以在何時使用靜態庫 鏈接 為了提供 符號 代碼需要操作(而不是 裝載機 尋找他們 動態庫 在運行可執行文件時)。


5
2018-03-25 15:34



嗨Ignacio,謝謝你的回應。這是否意味著如果我在庫上執行ranlib,每次鏈接器嘗試“引用”它時它都可以使用?怎麼刪除? - Ying
ranlib 用於創建和修改庫。鏈接器可以使用它們,通常是通過在命令行上傳遞庫位置和/或名稱。見 -L 和 -l 有關詳細信息的gcc參數。 - Ignacio Vazquez-Abrams
但事實並非如此 ar 那樣做呢?有什麼不同? - greatwolf


這個描述看起來很清楚: http://sourceware.org/binutils/docs/binutils/ranlib.html 

因此,如果您歸檔一組目標文件,請說:

$ ar r fruits.a apple.o orange.o pineapple.o

然後跑

$ ranlib fruits.a

創建fruits.a內容的索引並將索引存儲在fruits.a中。這對於鏈接以及對象相互調用的情況很有用。


11
2018-06-13 15:19





ranlib生成歸檔內容的索引並將其存儲在歸檔中。索引列出由作為可重定位目標文件的存檔成員定義的每個符號。 具有此類索引的存檔可加快鏈接到庫的速度,並允許庫中的例程相互調用,而不考慮它們在存檔中的位置。

來源:ranlib手冊頁


7
2018-01-05 19:06



為什麼這個下來投票需要解釋,因為來源和描述都是正確的。 - Albert