13

我正在链接一个针对 iOS 的静态框架,针对 armv7 ios 6 应用程序,我怀疑原始二进制文件来自 XCode 3.x 并使用 GCC 编译,我现在正在使用 CLang 编译器链接它。我没有框架的源代码,只有二进制文件:

(null): warning: (armv7) /.../DerivedData/.../armv7/HardwareObjectFile.o unable to open object file

我收到 69 条类似上述警告,每个链接到静态框架的 .o 文件都有一条。

出于某种原因,此警告是否严重?我已经简化了巨大的路径,这似乎表明库中的二进制文件已经在“/Users/somedeveloperthatisntme”中硬编码了一个路径,这几乎没有帮助,但不存在,因为我在一台甚至没有的计算机上使用这个库有一个名为“Users/somedeveloperthatisntme”的文件夹。

Dsymutil似乎是一种“操纵存档的 DWARF 调试符号文件”的工具,尽管我对它是什么以及它的作用一无所知,尽管 Apple 提供了详尽的文档,它告诉我为什么,但从来没有告诉我。它在做什么,这个警告对我意味着什么?我怀疑我需要供应商提供一个新的库/静态框架来解决这个问题?

更新:我无法解决这个问题,原因似乎在于由非常旧的 XCODE 版本编译的非常旧的二进制文件,作为第三方供应商的移动框架的一部分提供。这种情况下的问题将通过让该供应商重建他们的库来解决,我要求他们这样做,因为警告让我发疯,但他们似乎无法做到。最后,我放弃了他们的技术并用其他东西取而代之。(咧嘴笑)

4

5 回答 5

15

这些错误与您使用的架构和您引用的资源有关。我自己也不明白原因,但是如果您希望它们消失,请转到构建设置,然后构建选项,然后选择调试信息格式并选择 DWARF。

于 2013-09-02T21:42:19.830 回答
14

我在另一边,构建一个库供其他人使用,并且我能够通过在构建设置中设置“GCC_GENERATE_DEBUGGING_SYMBOLS = NO”来更改库项目,以使这些警告在消耗的应用程序项目中消失输出框架。

这不能解决您的问题,但如果您与该供应商联系,您可以将其传递。

于 2013-01-27T17:09:07.997 回答
4

其他答案包含有用的信息,但我希望简明扼要地写下真正的答案:

您无法修复此问题,错误的含义很简单:当前链接器将这些库文件视为包含无法打开的元素。

要解决警告,请联系供应商并获取已使用更高版本的 CLANG 重建的重新编译库。

于 2014-08-14T17:28:41.403 回答
3

我所做的只是删除 /Library/Developer/Xcode/DerivedData 文件夹,它为我修复了所有问题。

于 2015-04-09T15:44:35.317 回答
1

出现这些警告的另一个原因是项目中发布版本的符号剥离设置不正确。联系框架的作者并告诉他们使用正确的符号剥离设置制作一个新的二进制文件。

于 2014-08-26T15:04:04.147 回答