Posted at

Xcodeで「linker command failed with exit code 1」が発生した時はDerivedDataを消してみよう


エラー内容

xcodeでビルド時に下記のエラーが発生しました

上記のエラーで検索するとたくさん記事が出てきましたので、よく発生するエラーのようですね。

linker command failed with exit code 1 (use -v to see invocation)

この記事で私が対応したことを記載しますが、私自身iOSエンジニアではないため、理解がしていないところが多いです。

タイトルが「消してみよう」とかポップな感じですが問題が起きても責任は取れませんのでご了承ください。


対応したこと


Reveal in Logの確認

まずはこちらの記事を参考に、Reveal in Logを確認しようとしましたが、何も表示がされませんでした。。

そしてログを確認しようとエラー文言のところをダブルクリックをすると、xcode自体が落ちてしまい詳細がわからない状態でした。

Linker command failed with exit code 1でハマりまくったお話


「Enable Bitcode」の項目を「YSE」から「NO」に変える

ログの詳細がわからなかったのですが、次に上位に出てきたこちらの記事を参考に対応してみました。

おそらくエラーが出力された原因が違ったのだろうと思うのですが、解決ができませんでした。


「PROJECT・TARGETS」の設定画面を開き「PROJECT」>「Build Settings」タブに移動する。「bitcode」と検索したら「Enable Bitcode」の項目を「YSE」から「NO」に変えるだけ!


【Xcode】エラー「linker command failed with exit code 1」の解決策


DerivedData(中間生成ファイル)の削除

よくわからなかったので最終的にiOSエンジニアの方に聞いてみたところ、DerivedDataディレクトリ以下を削除することで直ることがあるとのこと。

sudo rm -rf ~/Library/Developer/Xcode/DerivedData/*

上記のコマンドを実行後、エラーなくビルドすることができました!

調べると色々と対応している記事がありますが、DevelopersIOさんの[Xcode][小ネタ] DerivedDataの削除についての備忘録にも


iOSアプリの開発をしていると、たまにXcodeがおかしくなり、どうにもこうにもよく分からないエラーを吐き出し始めた時、 試しに DerivedData を削除してみるということをよくします。

DerivedData は、プロジェクトごとに生成されるキャッシュデータといいますか、インデックスやログや生成物の等の溜め場といいますか、中間データの類です。 ときにこれが悪さをして不穏な動きをさせてしまっていることもあるようです。


と記載があるので、linker command failed with exit code 1 のエラーが発生した場合には、一度DerivedDataを削除してみると良さそうです!