自分の体験談です。忘備録がわりですが同じような症状の人にもわかるように。
linker command failedエラーが発生した状況はこんな感じでした。
#発生状況
- 名称「A」というプロジェクト名、アプリ名で開発開始して、ビルドやシミュレーターで開発をした
- 途中でアプリ名を「B」に変えて「Display Name」や「Indentity and Type」、その他プロジェクトフォルダの名称も「B」に変更した
- cocoapodsをインストールし、追加したいライブラリをPodfileに書き込んで、該当プロジェクトフォルダ内で
pod install
をした - 該当の.xcworkspaceファイルをXcodeで開き、シミュレーターなどでビルドを試みるも、build Faildになる
-
linker command failed with exit code 1 (use -v to see invocation)
エラーが発生
このエラーは様々な要因で起こります。Build Active Architecture Only
などの設定がおかしかった、という例などもありこれらを試してみてもうまくいかない・・・という人もいるかと思います。
あくまでもこれは私の1つの解決法です。
#解決法
通常、1度でもビルドをすると、
/Users/[ユーザー名]/Library/Developer/Xcode/DerivedData/Debug-iphoneosあたりに[アプリ名].appというアプリケーションが出来ますが、
途中でアプリ名を変更するとここに変更前と変更後の2つ(今回は「A.app」と「B.app」の2つ)が出てきてしまうことがあります。
Xcodeのプロジェクトの「Build Settings」の中の「Bundle Loader」を見てみると変更前の「A」が残っているのことが今回のエラーの元凶です。
ここの欄を${BUNDLE_LOADER}
と入力してあげましょう。これでビルドが通るはずです。
どうやらアプリ名を変更するときに必要な変更箇所を見逃していたようですね。やっぱりアプリ名を途中で変更するのは極力控えた方が良さそうです。
ちなみに見つかったうちの古い方アプリケーション(今回は「A.app」)は削除しても問題なさそうです。