1. 程式人生 > >打包靜態庫.a檔案的方法(ar,ranlib,nm命令介紹)

打包靜態庫.a檔案的方法(ar,ranlib,nm命令介紹)

這是由於最早在Unix系統上ar程式是單純用來打包多個.o到.a(類似於tar做的事情),而不處理.o裡的符號表。Linker程式則需 要.a檔案提供一個完整的符號表,所以當時就寫了單獨的ranlib程式用來產生linker所需要的符號資訊。也就是說,產生一個對linker合 格的的.a檔案需要做ar和ranlib兩步 。

很快,Unix廠商就發現ranlib做得事情完全可以合併到ar裡面去,於是ar程式的升級版本就包括了ranlib的功能,但早期的很多專案的Makefile都已經是按照兩步式的方法生成.a,所以為了保證這些早期檔案的相容性,ranlib被保留下來了。

如今,GNU/Linux系統上,ranlib依然存在,當然大部分專案已經不使用它了,因為ar -s就做了ranlib的工作。
歷史通常是進步和妥協的混合!