问题
Does anyone know what this warning means? It is followed by the error:
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1
This is an Xcode project for the iPad. I only see this when I compile for the simulator, not the device. I have linked a static library (*.a) to this project and that is where I think this is failing. Also, it used to run on the simulator without an issue and I am not sure what changed.
All of the compiler output:
Ld /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Products/Debug-iphonesimulator/IQ.app/IQ normal i386
cd /Users/cduckering/Desktop/LitePoint/Apps/App/IQ
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Products/Debug-iphonesimulator -F/Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Products/Debug-iphonesimulator -filelist /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Intermediates/IQ.build/Debug-iphonesimulator/IQ.build/Objects-normal/i386/IQ.LinkFileList -mmacosx-version-min=10.6 -dead_strip -ObjC -all_load -fprofile-use -Xlinker -objc_abi_version -Xlinker 2 -lCorePlot-CocoaTouch -weak_framework QuickLook -weak_framework MessageUI -framework QuartzCore -framework UIKit -framework Foundation -framework CoreGraphics -Xlinker -object_path_lto -Xlinker /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Intermediates/IQ.build/Debug-iphonesimulator/IQ.build/Objects-normal/i386/IQ.lto_temporary.o -o /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Products/Debug-iphonesimulator/IQ.app/IQ
ld: warning: section __DATA/__objc_imageinfo__DATA has unexpectedly large size 368 in /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Intermediates/IQ.build/Debug-iphonesimulator/IQ.build/Objects-normal/i386/IQ.lto_temporary.o
Assertion failed: (_mode == modeFinalAddress), function finalAddress, file /SourceCache/ld64/ld64-123.2/src/ld/ld.hpp, line 573.
0 0x10001286c __assert_rtn + 76
1 0x10008c71c ld::tool::OutputFile::addressOf(ld::Internal const&, ld::Fixup const*, ld::Atom const**) + 188
2 0x10008ed58 ld::tool::OutputFile::applyFixUps(ld::Internal&, unsigned long long, ld::Atom const*, unsigned char*) + 2840
3 0x10008b62e ld::tool::OutputFile::writeOutputFile(ld::Internal&) + 814
4 0x10008431c ld::tool::OutputFile::write(ld::Internal&) + 156
5 0x100012e3f main + 1247
6 0x100000e14 start + 52
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1
回答1:
The error is an internal error that appears to occur when the LLVM compiler isn't finding a symbol that it expects to find during the final link-time optimization phase. A common cause is linking against a static library which has had some essential symbol stripped (no error would be produced during the linking of the static library itself, although one would if the library was linked dynamically).
Although there is also a bug with LLVM not reporting the true error, the correct fix is to make sure that static libraries contribute all the symbols they should during linking. Try examining the build settings for static libraries included in the project, making sure that stripping of the linked product (the .a file) is either disabled or set to strip debug symbols only.
If you don't control the building of the static library, a workaround is to disable link-time optimization in LLVM, although this may result in the production of sub-optimal code.
回答2:
Solved.
This warning and error go away when I change the build setting called "C/C++ Compiler Version" from "LLVM GCC 4.2" to "GCC 4.2".
回答3:
I get "unexpectedly large size" only when the Build Setting "Link-Time Optimization" (LLVM_LTO = YES) is enabled. I recommend to leave it disabled (the default).
来源:https://stackoverflow.com/questions/7276917/ld-warning-section-data-objc-imageinfo-data-has-unexpectedly-large-size