3

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 のみを含めるように設定しようとしましたが、その後もエラーが発生し続けます。クリーニング...何か考えはありますか?

ありがとうございました!

4

4 に答える 4

3

私の場合、解決策(むしろ回避策)はDead Code Stripping、ビルド設定のリンクセクションで機能を無効にすることでした。

Link Time OptimizationXcode 5.1 には、この機能と(既にNOに設定していた)機能に関するバグがあるようです。

詳細については、https ://devforums.apple.com/message/950372#950372 をご覧ください。

編集 (2014-04-18):

この問題は、Xcode 5.1.1 で解決されたようです。Dead Code Strippingフラグを [はい] に戻しても、リンク エラーは発生しなくなりました。

于 2014-03-27T10:47:45.040 に答える
0

これがあなたの質問から遠く離れていないことを願っていますが、Xcode をアップグレードした後も古い SDK を使用できることは注目に値します。アップグレードの前に、次のフォルダーの内容をバックアップすることは悪い考えではありません。

$(xcode-select --print-path)/Platforms/*/Developer/SDKs

古い 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;

old へのパスを指定するだけです.app:

./xcode.sh /Applications/Xcode-463.app

この質問の詳細:

Xcode の古いバージョンは、次の場所にあります。

于 2014-03-19T18:05:37.847 に答える
0

ちょうど同じエラーが発生しました、

あなたがしたいことは、プロジェクトのビルド設定に行き、デバッグとリリースのために「アクティブなアーキテクチャのみをビルドする」をNOに設定することです。. .

これでうまくいきます:-)

于 2014-03-19T17:36:54.250 に答える