1. ホーム
  2. IOS

XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1

2022-02-11 23:22:41
<スパン XCodeのコンパイルエラーを解決する clang: error: linker command failed with exit code 1

今日はXCode 4.5.1をXCode 4.6.1にアップグレードして、iPhone 4とiPhone 5をつないでデバッグしてみました(元々はiPhone 4のみで開発したものです)。

iPhone4を選択すると、正常にコンパイルできます。

しかし、iPhone 5は次のようなエラーでコンパイルされます: clang: error: linker command failed with exit code 1 (use -v to see invocation)

ずっとネットで解決策を探していて、以下の方法でうまくコンパイルできるのですが、どういう意味があるのかよくわからないので、専門家の方にご指導をお願いします。(qq:274010315)です。


I.

Valid Architecturesの値をarmv7に変更する。

処理します。

PROJECT --> Build Settings --> Architectures --> Valid Architectures 彼の値はもともと armv7 armv7s で、armv7s を削除するだけです。

同じことをする

TARGETS --> Build Settings --> Architectures --> Valid Architectures 同じように変更します。

II.

上記の変更でうまくいかない場合、続ける

PROJECT --> Build Settings --> Architectures --> Build Active Architecture Only の値を No に変更します。

<スパン 同じ操作

TARGETS --> Build Settings --> Architectures --> Build Active Architecture Onlyの値をNoに変更します。


アップル・マッハオーリンカーエラー
はエラーのクラスで、エラーメッセージの最後の行で、通常は次のようになります。
<スパン コマンド /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang は、終了コード 1 で失敗しました。

このエラーは通常、2つのサブプロジェクトに同じ名前のクラスが存在することによるリンクエラーで発生します。
例えば、私がこのエラーを受けた理由は、両方の.mファイルで同じ名前のconst変数を定義したためです。

与えられたエラーメッセージは明白ではありませんが、それでもクリックすることでその場所を特定するための情報を見つけることができます。しかし、情報量が多いので、慎重にトラブルショットを行う必要があります。今回は、多くのメッセージの中から、その変数の命名が見つかったことが今回の問題の原因ですが、通常、変数はいくつかの接頭辞や接尾辞を付けて表示されることが多いようです。

 リンカコマンドは終了コード 1 で失敗しました (-v を使用して起動を確認します) このエラーは、私はサードパーティ製のライブラリ(SBJsonなど)を使用したいときに、私は直接プロジェクトのディレクトリにライブラリファイルをコピーして、このようなエラー(必ずしもこのようなエラー)をコンパイルし、ライブラリがオンライン自体をダウンロードしたと思うようになった、複数回発生しているようなので、それを追加する新しいライブラリまたは他の方法を見つける。限り、行にエラーがないだけでなく、私は問題のルートを理解していない、プロジェクトで今日FMDB(SQLIteサードパーティ製のクラスライブラリ)ファイルを追加するには、最初にプロジェクトの問題を考え、再びこのエラーをコンパイルしますが、新しいプロジェクトの後にまだこの問題は、オンライン見た後、解決策を得た表示されます。


  1. <スパン 未定義のシンボル  に対して  アーキテクチャは i386 です。  
  2. <スパン OBJC_CLASS_$_FMDatabase"。 から参照される。  
  3.       オブジェック クラス -ViewController.o内の参照  
  4. ld: シンボルが見つかりません  に対して  アーキテクチャ i386  
  5. clang: error: linker command failed with exit code 1 (use -v to see invocation) リンカーコマンドは終了コード1で失敗しました。  



ウェブで得た解決策は:

作業用左ナビゲーションバーTarget-->Build Phases-->Compile Sourcesに第3のライブラリリポジトリのすべての.mファイルを追加すると、コンパイルが通ります。




<スパン .mファイルの追加



FMDBTestでの比較からわかるように、いくつかの.mファイルがFMDBTestのTargetに追加されています。



<スパン 上記のエラーについて、Webの回答による私の理解では

これらのサードパーティのライブラリファイルを使用する場合、プロジェクトに直接ドラッグ&ドロップするため、Xcodeがコンパイル時に自動的に参照しないため、このエラーが発生し、手動で追加する必要があるのです。プロジェクト内に新しいファイルを作成すれば、この問題は発生しません。


http://blog.hsin.tw/2012/ios-dev-undefined-symbols-for-architecture-i386/ をご参照ください。