ld: warning: section __DATA/__objc_imageinfo__DATA has unexpectedly large size

天涯浪子 提交于 2019-12-14 04:18:42

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!