2011-09-01 27 views
6

有没有人知道这个警告是什么意思?其次是错误:ld:warning:section __DATA/__ objc_imageinfo__DATA意外的大尺寸

Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1

这是为iPad的Xcode项目。我只在编译模拟器时看到这一点,而不是设备。我已经将一个静态库(* .a)链接到这个项目,那就是我认为这个失败的地方。此外,它曾经在模拟器上运行,没有问题,我不知道发生了什么变化。

所有的编译器输出:

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 

回答

2

错误是一个内部错误,当LLVM编译器未找到它期望在最终链接时优化阶段期间找到的符号时出现。一个常见的原因是链接到一个静态库,它有一些基本的符号被剥离(链接静态库本身时不会产生错误,但如果库是动态链接的话就会产生错误)。

虽然也LLVM不报告的真实错误的错误,正确的解决方法是确保静态库链接过程中有助于他们应该在所有符号。尝试检查项目中包含的静态库的构建设置,确保禁用链接产品(.a文件)的剥离或设置为仅剥离调试符号。

如果不控制静态库的建设,一个解决方法是禁用LLVM链接时优化,尽管这可能会导致生产的次优码。

4

解决。

当我将名为“C/C++编译器版本”的构建设置从“LLVM GCC 4.2”更改为“GCC 4.2”时,此警告和错误消失。

+0

的确如此。看起来新编译器还没有准备好黄金时间。我有一个编译Mac代码的类似问题。调试版本可以正常工作,但由于类似于您的问题而无法编译发布版本,并且链接动态库时发生问题。 – adib

+1

使用Xcode 4.2,您应该使用Apple LLVM Compiler 3.0。 – LearnCocos2D

3

只有在生成设置“链接时间优化”(LLVM_LTO = YES)启用时,才会出现“意外的大尺寸”。我建议将其禁用(默认)。