2011-07-27 40 views
0

有誰能夠解釋一下這些包有擴展名(.a)中,我們有時把它添加到Xcode的:什麼是具有擴展名(一)包

1)究竟是那些包?

2)它們與具有(.framework)擴展名的其他軟件包有什麼不同?

3)我可以自定義/更改(.a)包內的代碼嗎?

非常感謝你提前。

回答

0

它們是由ar生成的靜態庫(或壓縮文件)。它包含一個或多個.o目標文件,其中包含鏈接所需的編譯代碼和符號。

A .framework包含指定接口的頭文件(.h)以及.dylib(共享庫)。

靜態庫已經被編譯成機器代碼 - 修改代碼並不容易。與共享庫不同,靜態庫被設計爲通過鏈接器鏈接 - 目標代碼將被真實地複製到目標文件中,而共享庫要求它在運行時存在,因爲只有引用被創建。

+0

非常感謝Yann對你的回答,我有兩個問題:1)你上面提到的(ar)是什麼東西,它是從終端生成靜態庫的命令? 2)給出靜態庫是一個機器代碼,當我在xcode中導入它時,如何從中受益?我的意思是,我無法從靜態庫中讀取機器碼,因此我不知道在哪裏使用它,它的真正優勢在哪裏? – JAHelia

+0

@Ja:1)是的,雖然Xcode會在構建靜態庫時爲您調用它,2)您需要知道此庫具有的接口,通常位於庫旁邊的頭文件中。 –

+0

原諒我Yann我不能投票,因爲我需要更多的聲望來這樣做......非常感謝你的支持 – JAHelia