0
有誰能夠解釋一下這些包有擴展名(.a)中,我們有時把它添加到Xcode的:什麼是具有擴展名(一)包
1)究竟是那些包?
2)它們與具有(.framework)擴展名的其他軟件包有什麼不同?
3)我可以自定義/更改(.a)包內的代碼嗎?
非常感謝你提前。
有誰能夠解釋一下這些包有擴展名(.a)中,我們有時把它添加到Xcode的:什麼是具有擴展名(一)包
1)究竟是那些包?
2)它們與具有(.framework)擴展名的其他軟件包有什麼不同?
3)我可以自定義/更改(.a)包內的代碼嗎?
非常感謝你提前。
它們是由ar
生成的靜態庫(或壓縮文件)。它包含一個或多個.o
目標文件,其中包含鏈接所需的編譯代碼和符號。
A .framework
包含指定接口的頭文件(.h
)以及.dylib
(共享庫)。
靜態庫已經被編譯成機器代碼 - 修改代碼並不容易。與共享庫不同,靜態庫被設計爲通過鏈接器鏈接 - 目標代碼將被真實地複製到目標文件中,而共享庫要求它在運行時存在,因爲只有引用被創建。
非常感謝Yann對你的回答,我有兩個問題:1)你上面提到的(ar)是什麼東西,它是從終端生成靜態庫的命令? 2)給出靜態庫是一個機器代碼,當我在xcode中導入它時,如何從中受益?我的意思是,我無法從靜態庫中讀取機器碼,因此我不知道在哪裏使用它,它的真正優勢在哪裏? – JAHelia
@Ja:1)是的,雖然Xcode會在構建靜態庫時爲您調用它,2)您需要知道此庫具有的接口,通常位於庫旁邊的頭文件中。 –
原諒我Yann我不能投票,因爲我需要更多的聲望來這樣做......非常感謝你的支持 – JAHelia