209
140

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【クソ食らえ】CocoaPodsとApple Mach-O Linker Errorとlinker command failed with exit code 1でどハマり

Last updated at Posted at 2015-07-17

で、結局何したら直るの

ググってもググっても、何やっても消えない「Apple Mach-O Linker Error」と「linker command failed with exit code 1」のお話です。きっと、ここで書いている内容をやってみても、直らないかもしれない。けど、参考になるかもしれない。やったことと、参考にしたサイトをまとめておきます。

※私の体験で決定的だった解決策は、**一番下**に書いておきます。

前提条件

  • CocoaPodsを使用したプロジェクト
  • ライブラリへのパスは間違っていない(はず)
  • CocoaPodsはとりあえずは最新版にした

1. そもそも……開くファイル間違えていないか

CocoaPodsを使用しているプロジェクトでは、「.xcodeproj」のファイルから開くとビルドできません。「.xcworkspace」を開きます。ここがまず第一のハマりどころ。

参考:初めてのCocoaPodsでLinker command failed with exit code 1でハマる

2. pod update、pod install したか

他人が作業を進めているブランチをcheckoutした場合に、よく遭遇します。まずは落ち着いてpod installまたはpod updateしましょう。ビルドに必要なライブラリをローカルに導入します。

3. 不要な“\”が入っていたりしないか、$(inherited)になっているか

pod installをすると、下のようなメッセージが出てきます。

[!] The `[プロジェクト名]` target overrides the `OTHER_LDFLAGS` build setting defined in `[GHUnitのパス]'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

OTHER_LDFLAGSの設定がオーバーライドされてますよ、という話のようで、たまに問題を起こすから、「$(inherited)」にしておくと良いよ、という話です。
この設定を確認するには、Project Navigatorからプロジェクトを選択し、Build Settingの一覧で「OTHER_LDFLAG」で検索します。

参考:

4. 【決定打】ビルドするアーキテクチャの設定を、プロジェクトとPodsともに揃える

このエラーを抜け出す決定打だったのが、この設定でした。下に参考したサイトを挙げておきます。

Podsとプロジェクトの、「Build Active Architecture Only」の項目を、どちらもYesまたはNoに統一してくださいということだそうです。CocoaPodsのTroubleShootingにも書いてありました……。

Build Active Architecture Onlyのチェック箇所画像

Podsの方を選択した時も、確認する場所は2箇所!
どちらもNoになっていると思っても、Podsの方がYesになっていることがよくあるので、気をつけてください!
スクリーンショット 2016-07-25 20.06.21.png

「Build Active Architecture Only」の設定は、必要なアーキテクチャのみでビルドするかどうかを設定する項目です。例えば、プロジェクトが「no」、Podsが「yes」のように異なった設定になっていると、ビルド時に「ライブラリが足りません、ありません」とエラーが発生するようです。

そんなの気付かないよ……> <

参考:


以上が、私の「Apple Mach-O Linker Error」と「linker command failed with exit code 1」と戦った、記録です。戦いの参考になればと思います。

209
140
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
209
140

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?