3

由于我更新到 Xcode 5.1,它将标准架构也更改为 include 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,但我不断收到错误消息,即使在清洁...有什么想法吗?

谢谢!

4

4 回答 4

3

就我而言,解决方案(一种解决方法 - 相反)是禁用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标志转回 Yes 不再导致链接错误。

于 2014-03-27T10:47:45.040 回答
1

我的一个应用程序刚刚收到相同的错误消息,唯一为我解决的问题是将 Link-Time Optimizations 更改为 No。

于 2014-03-20T12:08:31.410 回答
0

刚遇到同样的错误,

您要做的是转到项目构建设置,并将“仅构建活动架构”设置为“”以进行调试和发布。. .

这会让你继续前进:-)

于 2014-03-19T17:36:54.250 回答
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:

于 2014-03-19T18:05:37.847 回答