我正在测试一个图像捕获库,它通过代码库发送为常规头文件和以"*.a"扩展名结尾的文件.我不熟悉使用这种格式的文件,似乎无法找到正确的搜索"魔力".
此文件扩展名代表什么?
如果需要额外的步骤来将其与我的XCode项目集成,该怎么办?
Thi*_*car 15
也许更多的理论可以让你走上正轨,这样你就会知道下次如何搜索:
.a文件是对象(.o)文件的存档.这些目标文件通常由汇编程序,编译器或其他语言翻译器生成; 它们包含通常不可直接执行的机器代码,但链接器工具使用它们通过组合这些目标文件的部分来生成可执行文件或另一个库.
您应该知道的另一件重要事情是,由于这些文件包含机器代码,因此必须针对您正在针对的正确架构编译它们(例如:armv7,i386等).这可能就是为什么有时你可以为一个设备构建你的项目但是如果你没有为目标平台提供正确的文件集(例如iPhone模拟器与实际的iPhone)的话.
也可以使用"通用二进制文件",这些文件又将目标文件(.a)的存档包装在一起用于不同的体系结构(例如使用诸如lipo之类的工具),以便可以将相同的库文件提供给多个体系结构的链接器.或者,您可以为每个目标使用不同的链接器配置(例如,在XCode中使用条件构建设置).所有这些文件都可以使用某些工具进行分析(例如"文件","otool","lipo -info"等),每个工具都有几个参数可供使用.调试器还将检查这些文件中的符号以用于其自身目的.
当您将".a"文件拖到Xcode中的项目目录时,您会注意到它会自动将此文件添加到目标"Build Phases"下的"Link Binary With Libraries"列表中.
由于头文件允许我们将程序源代码的某些元素分离为可重用文件,这些文件通常包含类,子例程,变量和编译步骤中引用所需的其他标识符的前向声明,因此通常会有库提供为".a"文件中编译对象(.o)的归档以及它们各自的标题.例如,只要在XCode项目中包含头文件,编辑器就会为这些新功能提供自动完成功能.
有时,您可能还会考虑在项目中使用库的实际源代码而不是二进制文件,因为这可能会使调试变得更容易,以防在"库"包中发生意外行为.很多时候,当二进制分发用于隐藏实现细节(商业库)时,这不是一个选项(当您无法访问源时).
| 归档时间: |
|
| 查看次数: |
6423 次 |
| 最近记录: |