2011-11-22 56 views
23

.a(例如libcrypto.a)文件究竟是什麼,它們由什麼組成?它是.m還是.o.h.c文件?什麼是.a(作爲libcrypto.a)文件?

IOS SDK/Xcode如何理解它們?如果我們在我們的xcode項目中包含.a文件,我們是否也需要複製相應的源文件?

+0

很抱歉,對於您指針:) – chetan

回答

39

.a文件是static library文件。它們「包含」一個或多個.o文件,即編譯的代碼。要使用它們,您(通常)需要對應於已編譯代碼的標題(.h)文件,但您本身不需要源代碼(.c,.m)。

.a文件製作與ar實用程序和鏈接器(ld)即(通常)由編譯器調用知道他們的格式,以及如何從歸檔和你的可執行文件中提取的代碼中的相關部分。

+0

感謝您的及時答覆墊即時通訊新本,和力知道,如果它存在, 感謝, 我創建了一個靜態庫某文件的示例項目和複製另一個項目中的頭文件和.a文件。但是當我嘗試以調試模式訪問這些方法時,控件指向了我創建.a文件的相應.m文件的方法。 爲什麼它打開.m文件,如果我只添加了.h和.a文件。 – chetan

+0

調試信息包含文件名和行號。這些信息包含在'.o'文件中,以便調試器可以向您顯示您正在查看的指令生成的源代碼。沒有這一點,你只會看到沒有用處的程序集。如果有足夠的信息,您的IDE可以將該調試信息映射到實際的源代碼文件。 – Mat

+0

謝謝,所以你說,只有在調試模式下,IDE指向源文件,而不是在運行時,因爲.o文件? 如果我在調試模式下將項目從其位置中刪除,則會拋出錯誤,指出「xcode無法找到源文件」並在該處打破。 但是,當我去運行時,沒有錯誤 – chetan