将.a库文件类型与XCode集成

时间:2013-04-08 16:46:57

标签: ios xcode

我正在测试一个图像捕获库,它通过代码库发送为常规头文件和以“* .a”扩展名结尾的文件。我不熟悉使用这种格式的文件,似乎无法找到正确的“魔术”来搜索。

此文件扩展名代表什么?

如果需要额外的步骤来将其与我的XCode项目集成,该怎么办?

2 个答案:

答案 0 :(得分:14)

也许更多的理论可以让你走上正轨,这样你就会知道下次如何搜索:

.a文件是对象(.o)文件的存档。这些目标文件通常由汇编程序,编译器或其他语言翻译器生成;它们包含通常不能直接执行的机器代码,但链接器工具使用它们通过组合这些目标文件的一部分来生成可执行文件或另一个库。

您应该知道的另一件重要事情是,由于这些文件包含机器代码,因此必须针对您正在针对的正确架构编译它们(例如:armv7,i386等)。这可能就是为什么有时你可以为一个设备构建你的项目但是如果你没有为目标平台提供正确的文件集(例如iPhone模拟器与实际的iPhone)的话,则不能为另一个设备构建项目。

也可以使用“通用二进制文件”,这些文件又将目标文件(.a)的存档打包到不同的体系结构(例如使用lipo等工具),以便相同的库文件可以赋予链接器多个体系结构。或者,您可以为每个目标使用不同的链接器配置(例如,在XCode中使用条件构建设置)。可以使用某些工具(例如“文件”,“otool”,“lipo -info”等)分析所有这些文件,并且每个文件都有几个参数可供使用。调试器还会检查这些文件中的符号以用于它们自己的目的。

当您将“.a”文件拖到Xcode中的项目目录时,您会注意到它会自动将此文件添加到目标“Build Phases”下的“Link Binary With Libraries”列表中。

由于头文件允许我们将程序源代码的某些元素分离为可重用文件,这些文件通常包含类,子例程,变量和编译步骤中引用所需的其他标识符的前向声明,因此很常见将库作为“.a”文件中的编译对象(.o)的档案以及它们各自的标题提供。例如,只要在XCode项目中包含头文件,编辑器就会为这些新功能提供自动完成功能。

有时,您可能还会考虑在项目中使用库的实际源代码而不是二进制文件,因为这可能会使调试变得更容易,以防在“库”包中发生意外行为。很多时候,当二进制分发用于隐藏实现细节(商业库)时,这不是一个选项(当你无法访问源时)。

答案 1 :(得分:3)

.a代表档案。它也被称为静态库。我相信你应该只能将它和头文件拖到Xcode中。 Xcode应该从其扩展中选择正确的事情。

示例,请参阅appr。从这里30秒开始 http://memention.com/ac3dreader/usage/quickstart.html

Google Analytics中的另一个示例,位于设置

  

将SDK的Library目录中的GANTracker.h和libGoogleAnalytics.a拖到新项目中。

https://developers.google.com/analytics/devguides/collection/ios/devguide