这些 Dsymutil 警告在 XCode 4.5 中意味着什么?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14489692/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
What do these Dsymutil Warnings mean in XCode 4.5?
提问by Warren P
I am linking a static framework for iOS, against an armv7 ios 6 application, I suspect that the original binaries are from XCode 3.x and were compiled with GCC, and that I'm now linking it using CLang compiler. I do not have the source code for the framework, only the binaries:
我正在链接一个 iOS 静态框架,针对 armv7 ios 6 应用程序,我怀疑原始二进制文件来自 XCode 3.x 并使用 GCC 编译,我现在正在使用 CLang 编译器链接它。我没有框架的源代码,只有二进制文件:
(null): warning: (armv7) /.../DerivedData/.../armv7/HardwareObjectFile.o unable to open object file
I get 69 warnings like the above, one for every .o file linked into the static framework.
我收到了 69 个类似的警告,每个链接到静态框架的 .o 文件都有一个警告。
Is this warning serious for any reason? I have simplified the giant path which appears to indicate that the binary files in the library have hardcoded a path in "/Users/somedeveloperthatisntme" that could hardly help but Not Exist since I'm using this library on a computer that doesn't even have a folder named "Users/somedeveloperthatisntme".
出于任何原因,此警告是否严重?我已经简化了巨大的路径,它似乎表明库中的二进制文件在“/Users/somedeveloperthatisntme”中硬编码了一个路径,这几乎没有帮助但不存在,因为我在一台甚至不存在的计算机上使用这个库有一个名为“Users/somedeveloperthatisntme”的文件夹。
Dsymutilappears to be a tool to "manipulate archived DWARF debug symbol files", although I know precisely nothing about what it is and what it does, notwithstanding the thorough documentation from Apple, which tells me what, but never ever, why. What is it doing, and what will this warning mean for me? I suspect I need a new library/static-framework from the vendor to clear this up?
Dsymutil似乎是一个“操作存档的 DWARF 调试符号文件”的工具,尽管我对它是什么以及它做什么一无所知,尽管 Apple 提供了详尽的文档,它告诉我什么,但从来没有,为什么。它在做什么,这个警告对我意味着什么?我怀疑我需要来自供应商的新库/静态框架来解决这个问题?
Update:I am unable to solve this and it appears the cause lays with very old binaries compiled by a very old XCODE version, shipped as part of a mobile framework from a third party vendor. The issue in this case would be resolved by having that vendor rebuild their library, something I asked them to do because the warnings drove me nuts, but which they seem unable to do. In the end I ditched their technology and replaced it with something else. (Grin)
更新:我无法解决这个问题,看来原因在于由非常旧的 XCODE 版本编译的非常旧的二进制文件,作为第三方供应商的移动框架的一部分提供。在这种情况下,问题将通过让该供应商重建他们的库来解决,我要求他们这样做是因为警告让我发疯,但他们似乎无法做到。最后我放弃了他们的技术并用其他东西取而代之。(咧嘴笑)
采纳答案by Warren P
The other answers contain helpful information but I wish to put the real answer down succinctly:
其他答案包含有用的信息,但我想简明扼要地写下真正的答案:
You can not fix this, and the meaning of the errors is simple: The current linker sees these library files as containing elements that can not be opened.
您无法修复此问题,错误的含义很简单:当前链接器将这些库文件视为包含无法打开的元素。
To solve the warnings, contact the vendor and get a recompiled library that has been rebuilt with a later version of CLANG.
要解决这些警告,请联系供应商并获取已使用更高版本的 CLANG 重建的重新编译的库。
回答by ERIC
These errors are to do with the architectures you are using and the resources you are referencing. I don't understand the reasons myself, but if you want them to go away, go to Build settings, then Build Options and then select Debug information format and select DWARF.
这些错误与您使用的架构和您引用的资源有关。我自己也不明白原因,但是如果您希望它们消失,请转到构建设置,然后是构建选项,然后选择调试信息格式并选择 DWARF。
回答by a. brooks hollar
I am on the other side of this, building a library for others to use, and I was able to alter the library project by setting 'GCC_GENERATE_DEBUGGING_SYMBOLS = NO' in the Build Settings to make those warnings go away in an Application project that consumed the output framework.
我在另一方面,构建一个供其他人使用的库,我能够通过在构建设置中设置“GCC_GENERATE_DEBUGGING_SYMBOLS = NO”来更改库项目,以使这些警告在消耗了输出框架。
This isn't a solution to your problem, but if you're in contact with this vendor, you could pass this along.
这不是您问题的解决方案,但如果您与该供应商联系,您可以将其传递下去。
回答by Epic Defeater
What I did was just delete the /Library/Developer/Xcode/DerivedData folder and it fixed everything for me.
我所做的只是删除了 /Library/Developer/Xcode/DerivedData 文件夹,它为我修复了所有问题。
回答by JAL
Another reason these warnings could occur is because of incorrect symbol stripping settings for release builds in a project. Contact the author of the framework and tell them to make a new binary with the proper symbol stripping settings.
出现这些警告的另一个原因是项目中发布版本的符号剥离设置不正确。联系框架的作者并告诉他们使用正确的符号剥离设置制作新的二进制文件。