Building Error: What's "-licucore" and how can I fix this error?

Building Error: What's "-licucore" and how can I fix this error?

一整天后,我修复了一个遗留项目中的数十个错误,但我被这个烦人的问题所困扰。我在网上搜索了很多,但无法得到相关的答案。

 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: -dynamic not specified the following flags are invalid: -ObjC -ObjC 
    error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -licucore
    error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -licucore is not an object file (not allowed in a library)

我应该修改 Build Settings 或 Build Phases 中的某些内容,还是 CocoaPods 中的某处???

添加:构建目标时发生错误,这里是所有错误信息:

Libtool /Users/wangshudao/Library/Developer/Xcode/DerivedData/Diana-gfwxapulgdvudifuftotddpukijd/Build/Products/Debug-iphonesimulator/libDianaModels.a normal x86_64
cd /Volumes/HDD/Dev/workplace/iOS/Diana
export IPHONEOS_DEPLOYMENT_TARGET=6.1
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static -arch_only x86_64 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk -L/Users/wangshudao/Library/Developer/Xcode/DerivedData/Diana-gfwxapulgdvudifuftotddpukijd/Build/Products/Debug-iphonesimulator -filelist /Users/wangshudao/Library/Developer/Xcode/DerivedData/Diana-gfwxapulgdvudifuftotddpukijd/Build/Intermediates/Diana.build/Debug-iphonesimulator/DianaModels.build/Objects-normal/x86_64/DianaModels.LinkFileList -ObjC -lPods-Model-AFNetworking -lPods-Model-Mantle -lPods-Model-ReactiveCocoa -lPods-Model-SSKeychain -lPods-Model-TMCache -licucore -framework AVOSCloud -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework CoreTelephony -framework Foundation -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -weak_framework UIKit -ObjC -lPods-Model-AFNetworking -lPods-Model-Mantle -lPods-Model-ReactiveCocoa -lPods-Model-SSKeychain -lPods-Model-TMCache -licucore -framework AVOSCloud -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework CoreTelephony -framework Foundation -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -weak_framework UIKit -framework SystemConfiguration -framework MobileCoreServices -framework Foundation -lPods-Model -o /Users/wangshudao/Library/Developer/Xcode/DerivedData/Diana-gfwxapulgdvudifuftotddpukijd/Build/Products/Debug-iphonesimulator/libDianaModels.a

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: -dynamic 未指定以下标志无效:-ObjC -ObjC 错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:找不到文件:-licucore 错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: 文件:-licucore 不是目标文件(库中不允许) 错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:找不到文件:-licucore 错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:文件:-licucore 不是目标文件(库中不允许)

linker 的命令行选项告诉它 libicucore.a 中的 link(可能;但也可能是 libicucore.dylib,但不太可能iOS).

您必须提供库才能修复错误。

失败的其他潜在原因是:

  • 在任何 -L 命令行选项中不包括包含库的目录。
  • "fat" 库文件不包括必要的 CPU 体系结构,尽管 linker 在这种情况下会产生稍微不同的错误消息。

请参阅此 manpage,尽管它有些过时(我找不到 Apple 当前的 ld 联机帮助页)。

尝试在项目的目标构建设置中的 Other Linker Flags 中添加 -licucore 标志。它可能会解决您的问题。

我在使用 RegexKitLite 时遇到了类似的错误,我用以下设置修复了:

我通过删除所有 Pods.XXX.xcconfig 文件中的所有 -l"icucore" 来解决这个问题。它们是由 CocoaPods 自动生成的,我不知道如何控制这些链接器标志。不管怎样,现在可以了...