因为我更新了Xcode 5.1,它将标准体系结构更改为也包含arm64
,所以我不断从链接器中收到以下错误:
0 0x109157f93 __assert_rtn + 144
1 0x1091faed4 ld::passes::stubs::Pass::makeStub(ld::Atom const&, bool) + 0
2 0x1091fb5f7 ld::passes::stubs::Pass::process(ld::Internal&) + 497
3 0x1091fbc07 ld::passes::stubs::doPass(Options const&, ld::Internal&) + 111
4 0x109158b50 main + 772
5 0x7fff8568b5fd start + 1
A linker snapshot was created at:
/tmp/MyApp-2014-02-19-175731.ld-snapshot
ld: Assertion failed: (target != NULL), function stubableFixup, file /SourceCache/ld64/ld64-236.3/src/ld/passes/stubs/stubs.cpp, line 126.
clang: error: linker command failed with exit code 1 (use -v to see invocation)
鉴于我使用仅为armv7编译的第三方库,我尝试将架构和有效架构选项设置为仅在项目和目标构建中包含armv7。设置,但我一直在收到错误,即使在清理之后......任何想法?
谢谢!
答案 0 :(得分:3)
在我的例子中,解决方案(相反,一种解决方法)是在Build Settings的Linking部分禁用Dead Code Stripping
功能。
Xcode 5.1中似乎存在关于此功能和Link Time Optimization
一个(我已经设置为 NO )的错误。
可以在此处找到更多信息:https://devforums.apple.com/message/950372#950372
编辑(2014-04-18):
从Xcode 5.1.1开始,问题似乎已得到解决,因为将Dead Code Stripping
标志恢复为是不再导致链接错误。
答案 1 :(得分:1)
我刚刚为我的某个应用程序收到了相同的错误消息,并且唯一修复它的方法是将链接时优化更改为否。
答案 2 :(得分:0)
刚遇到同样的错误,
您要做的是转到项目构建设置,并设置“仅构建活动架构”。调试以及发布的否。 。 。
这会让你去: - )
答案 3 :(得分:0)
我希望这不是你的问题,但是值得注意的是,你可以在升级Xcode之后保留旧的SDK。在升级之前备份以下文件夹的内容并不是一个坏主意:
$(xcode-select --print-path)/Platforms/*/Developer/SDKs
旧的SDK可以在升级后复制回来。显然,最好尽可能使用最新的SDK ,但有时候最后期限和开发现实使得有必要继续使用工作SDK,直到代码可以重新编写。
此过程也可以半自动执行。只需在最新位置安装最新的Xcode版本(保持旧版本不变),并使用以下脚本链接现有SDK:
platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
for platform in `ls $platforms_path`
do
sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
done;
fi;
您只需要为其提供旧.app
的路径:
./xcode.sh /Applications/Xcode-463.app
此问题中的更多信息:
您可以在此处找到旧版本的Xcode: