What do these Dsymutil Warnings mean in XCode 4.5?

2019-03-11 04:37发布

问题:

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:

(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.

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".

Dsymutil appears 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?

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)

回答1:

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.



回答2:

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.

This isn't a solution to your problem, but if you're in contact with this vendor, you could pass this along.



回答3:

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.



回答4:

What I did was just delete the /Library/Developer/Xcode/DerivedData folder and it fixed everything for me.



回答5:

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.