XCode-iOS:此链接器警告意味着“文件是为不支持的文件格式构建的”

时间:2014-04-21 23:53:42

标签: ios xcode

我正在尝试获得一些中型到大型的代码库,坦率地说,它具有高度的可移植性。

我决定将其打包为一个可加载的包(插件)并从其中一个模板应用程序项目中捎带,并遵循一些关于在应用程序中为可加载包添加目标的教程。

此外,这个可加载的bundle依赖于我为iOS构建的自定义框架,并将其作为可加载包的依赖项添加。即。该插件链接到静态库的框架包装器。

自定义框架已成功构建。当然,我还没有证实它有效。我们的想法是测试集成功能。

我的构建设置主要是默认值,但某些预处理器定义除外。

因为我还没有真正了解代码库,所以我实际上每次向插件目标添加一个文件,并且每3-4个文件添加一次。

构建成功完成但有许多警告如下,中间构建结果的路径......等等:

“文件是为不支持的文件格式构建的,带有一系列十六进制字符(),而不是被链接的体系结构(armv7s)”。当我将十六进制字符转换为ascii时,它只显示“#1 / Users / my-username /?”。

当我在中间构建结果中的任何.o上执行'文件'时,我得到“ASCII c程序文本,行很长”

我做错了什么?这是什么意思?

非常感谢您的时间。

1 个答案:

答案 0 :(得分:0)

简短的回答是:

如果收到此消息,则表示项目设置混乱。

  1. 如果要将应用程序与自定义框架链接,请确保它们构建为胖二进制文件
  2. 您需要非常清楚地了解活动架构的含义及其使用方式,以及您是否只想为应用程序或所有可能的架构构建活动架构。
  3. 如果你像我一样,继承了大量依赖于gcc及其扩展的可移植代码,期望围绕内置*属性进行更改并大量使用__clang 来提供曾经通过 GNUC 等人
  4. 定义的宏
  5. 此外,您需要使用-E for clang来调试/理解预处理和文件包含。也就是说,不要忘记把它拿出来因为实际会发生什么是你的.o只包含文本而构建可能会成功,但链接器会给你一个奇怪的消息主题问题。
  6. 最后,要明白Xcode和任何一个复杂的软件一样 buggy 。有时,它会保留你摆脱的设置。在我的例子中,我将自定义框架包含在将它们放置在本地目录中后构建。然后我从项目中删除它们,并在提示时选择废弃。构建保持失败,因为链接器出于某种原因正在寻找本地目录。您必须编辑* .pbxproj并手动删除它们。