今天早上我只是在做一些小工作,製作一些靜態庫。爲什麼靜態庫以'.a'結尾?爲什麼C/C++靜態庫以'.a'結尾?
我的辦公室裏沒有人知道,所以我想我會詢問堆棧 溢出。我們正在用C++,C和Objective-C編寫代碼。
今天早上我只是在做一些小工作,製作一些靜態庫。爲什麼靜態庫以'.a'結尾?爲什麼C/C++靜態庫以'.a'結尾?
我的辦公室裏沒有人知道,所以我想我會詢問堆棧 溢出。我們正在用C++,C和Objective-C編寫代碼。
我認爲.a慣例來自於使用「archiver」將對象文件放置到靜態庫中。
這只是基於Unix系統的慣例。 Visual Studio(Windows)生成.lib
文件。
事實上,我剛剛發現還有其他幾個namings,請參閱維基百科文章Library (computing), section File naming。
這是一個包含由「ar」生成的.o目標文件的存檔格式(想到.zip或.tar)。鏈接器只是將對象文件分別指定爲對象。
如果單獨指定.o文件,則即使未指定任何符號,鏈接器也可能包含它們,但使用.a文件鏈接器通常只會在歸檔中引入需要滿足正在構建的對象的.o文件。 – nategoose 2010-09-17 16:34:50
我想如果有人知道背後的歷史將是非常有趣的。 – Kaili 2010-09-17 16:24:30
用POSIX標記 - 在Windows上,常見的擴展名是.lib。 – 2010-09-17 16:29:30
@Billy:是POSIX指定的'.a'擴展名嗎? – jalf 2010-09-17 19:34:01