236

CocoaPods からファイルをインポートするたびに、Apple Mach-O リンカー エラーが発生します。

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FBSession", referenced from: someFile
ld: symbol(s) not found for architecture arm64

私が使用するさまざまな Pod に対して、これらのうち約 12 個を取得します。

XCode 5 を使用して iPhone 5S 用にビルドしようとしています。

ここSOでさまざまなソリューションを試してきましたが、まだ機能していません。

この Apple Mach-O リンカー エラーを修正するにはどうすればよいですか?


興味深いかもしれない別の警告を見つけました。これが解決策につながることを願っています:

Ignoring file ~/Library/Developer/Xcode/DerivedData/SomeApp/Build/Products/Debug-iphoneos/libPods.a, 

file was built for archive which is not the architecture being linked (arm64):~/Library/Developer/Xcode/DerivedData/someApp/Build/Products/Debug-iphoneos/libPods.a

4

45 に答える 45

268

アーキテクチャ有効なアーキテクチャに問題がない場合は、次$(inherited)のように、Pod で生成されたリンカー フラグを追加する を [その他のリンカー フラグ] に追加したかどうかを確認できます。 ここに画像の説明を入力

于 2014-11-13T07:33:29.963 に答える
52

次のように設定して、この問題を解決しました。

ARCHS = armv7 armv7s

VALID_ARCHS = armv6 armv7 armv7s arm64

于 2013-11-28T03:23:03.587 に答える
42

私も同じ問題に遭遇しました。上記の方法は機能しません。次のディレクトリにあるファイルを誤って削除してしまいました。

フォルダーの配置:

〜/ライブラリ/開発者/Xcode/DerivedData/

ここに画像の説明を入力

于 2016-03-04T01:40:29.467 に答える
20

右側のターゲットメンバーシップで選択した実装ファイルを確認して、私のものを修正しました。これは、拡張機能、つまりカスタム キーボードを扱う場合に特に便利です。

対象会員

于 2015-10-12T12:38:06.360 に答える
11

build_active_architectureが NO に設定されている理由をいくつか説明します。Xcode は、接続されているデバイスを検出し、それに応じてアクティブなアーキテクチャを設定します。したがって、第 2 世代の iPod Touch をコンピュータに接続すると、Xcode はアクティブなアーキテクチャを armv6 に設定する必要があります。上記のデバッグ構成でターゲットをビルドすると、時間を節約するために armv6 バイナリのみがビルドされます (巨大なプロジェクトがない限り、違いに気付かないかもしれませんが、時間の経過とともに秒数が加算されると思います)。

App Store に公開するためのディストリビューション構成を作成するときは、このオプションが設定されていないことを確認する必要があります。これにより、Xcode は代わりにファット ユニバーサル バイナリ http://useyourloaf.com/blog/2010/04/21/xcodeをビルドします。 -build-active-architecture-only.html

于 2015-03-05T12:09:19.563 に答える
6

libz.dylibこれはまたはに関連している可能性がありlibz.tbdます。リンクするバイナリのターゲットに追加して、もう一度コンパイルしてみてください。

于 2016-08-15T18:26:27.593 に答える
5

DerivedData --> Build --> Products --> Debug-iphoneos の内容を削除した結果、解決しました。

于 2015-11-09T12:26:02.510 に答える
4

有効なアーキテクチャを armv7 armv7s に設定し、ビルド アクティブ アーキテクチャをリリースで YES のみに設定してから、コマンド ラインから新しい「ポッド インストール」を実行することで解決しました。

于 2014-01-17T17:42:11.123 に答える
3

Xcode 5.1にアップグレードした後も同じ問題が発生し、アーキテクチャarmv7 armv7sに設定して修正しました

于 2014-03-17T12:00:06.793 に答える
2

これは私のために働いた:

iOS SDK 9.3

app.xcodeproj のビルド設定に 有効なアーキテクチャ: armv7 armv7s ビルド アクティブなアーキテクチャ: いいえ

Clean and build 、私のために働いた。

于 2016-04-01T12:41:34.837 に答える
2

ターゲットの Build Settings を に設定-ObjCするOther Linker Flagsと問題が解決しました。

于 2015-06-03T14:28:11.207 に答える
1

この問題は、Podfile および を介してポッドをインストールした後に発生しましたpod install。さまざまな修正を試みた後、最終的に Pod を手動でインポートし (必要なファイルをプロジェクトにドラッグ)、問題を解決しました。

于 2015-02-28T17:22:43.200 に答える
1

morisunshineの回答が正しい方向を示していたので、彼の回答を少し調整することで、iOS8.2の問題が解決しました。彼のおかげです。

次のように設定して、この問題を解決しました。

ARCHS = armv7

VALID_ARCHS = armv6 armv7 armv7s arm64

BUILD ACTIVE ARCHITECTURE ONLY= NO
于 2015-07-07T08:44:22.267 に答える
1

以下は、有効なアーキテクチャリストからarm64を削除する必要なく、64ビットシミュレーターとRetina iPad Miniの両方でXcode 5.1でエラーなしでGPUImageコンパイルを取得するために機能しました(テスト用に64ビットデバイスを所有する目的を無効にします) 64 ビット パフォーマンス)。

GitHub ページから .zip フォルダーをダウンロードします: https://github.com/BradLarson/GPUImage

解凍し、「フレームワーク」フォルダーに移動します。ここから、'Source' フォルダーを Xcode プロジェクトに追加してコピーします。「コピー先グループのフォルダーにアイテムをコピーする」がチェックされていることを確認し、「追加されたフォルダーのグループを作成する」もチェックされていることを確認します。これにより、一般的な iOS および Mac ヘッダー/実装ファイルがプロジェクトにコピーされます。

iOS 用にコンパイルしているために Mac ファイルが必要ない場合は、ファイルをプロジェクトにコピーする前に Mac フォルダーを削除するか、単に Xcode 内からグループを削除することができます。

ソース フォルダーをプロジェクトに追加したら、以下を使用して GPUImage のクラス/メソッドの使用を開始します。

#import "Source/GPUImage.h" 

指摘すべきいくつかのこと:

  • 「Cocoa」が見つからないというエラーが表示された場合は、Mac フォルダー/ヘッダーが iOS プロジェクトに追加されています。プロジェクトから Mac グループ/ファイルを削除するだけで、警告は消えます。
  • Source フォルダー (Xcode のグループではない) の名前を変更する場合は、#import 命令で「Source/GPUImage.h」の代わりにその名前を使用します。したがって、プロジェクトに追加する前にフォルダーの名前を GPUImageFiles に変更する場合は、次を使用します: #import "GPUImageFiles/GPUImage.h
  • A7 64 ビット プロセッサを利用するには、[有効なアーキテクチャ] リストで arm64 が選択されていることを確認してください。
  • これは GPUImage.framework バンドル ( http://www.raywenderlich.com/60968/ios-7-blur-effects-gpuimageからフレームワークをダウンロードした場合など) ではないため、GPUImage を使用する正しい方法ではない可能性があります。 Brad Larson が意図したものですが、現在の SpriteKit プロジェクトでは機能します。
  • フレームワーク/ライブラリなどにリンクする必要はありません。上記のようにヘッダーと実装ソース フォルダーをインポートするだけです。

上記が役に立てば幸いです - 質問が何度も出されたにもかかわらず、どこにも明確な指示がなかったようですが、恐れることはありません。GPUImage は間違いなく arm64 アーキテクチャで動作します!

于 2014-03-23T10:39:56.887 に答える
1
  1. ターゲットのビルド設定に移動します。
  2. デバッグとリリースの両方で、BUILD ACTIVE ARCHITECTURE ONLY = NO を設定します。
  3. ビルドして実行する
于 2015-08-13T22:47:04.303 に答える
1

私は同じ問題に直面しました。ここで見つけた私の解決策:なぜリンカーは静的ライブラリをエラーにリンクするのですか? iOS

ライブラリ検索パスに$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)を追加すると、問題が修正されました。

于 2019-06-13T15:25:04.443 に答える
1

私の場合、私は探す必要がありました

C++ Standard Libraryが選択されていることを確認してlibc++ください。

于 2015-10-09T00:48:28.973 に答える
0

「Security.framework」を追加すると、うまくいきました。

于 2016-05-13T14:49:17.290 に答える
0

これが古いブランチであることは知っています。ただし、最新の CocoaPods バージョン (1.0.0) に移行し、すべてのポッドを再インストールしようとした後、同じ問題が発生し始めました。「armv64 のシンボルが見つかりません」リンカー エラーが発生しました。奇妙なことに、次の手順を実行して解決しました。

  1. すべてのポッドを削除します (ポッドの初期化、ポッドのインストール)

  2. 逆の順序で podfile を書き換えます (代わりに: pod "Mixpanel", pod "Intercom", 私は使用しました: pod "Intercom", pod "Mixpanel" )

  3. ポッドのインストール

Podfile の依存関係の順序を逆にして Pod を再構築すると、問題が解決しました。

于 2016-05-22T10:03:52.380 に答える
0

このリンカー エラー メッセージは、それを定義するソース ファイルがアプリ ターゲットの一部としてマークされていないことを示しています。そのソース ファイルを見つけ、右側のファイル プロパティ インスペクターを使用して、アプリ ターゲットのターゲット メンバーシップ エントリを確認します。

解決策: ファイルを選択 -> openFile Inspector -> ターゲット メンバーシップを参照 -> チェックされていないターゲットが実行中のターゲットかどうかを確認

于 2020-01-09T12:06:23.427 に答える
0

この問題を克服するために AWS フレームワークをインストールした後、同じ問題に直面しています。AWS POD のインストール後に作成されるプロジェクトから POD 構成ファイルを更新しました。以下のように設定ファイルを確認してください

OTHER_LDFLAGS = $(inherited) -ObjC -l"Pods-AWSAutoScaling" -l"
Pods-   AWSCloudWatch" -l"Pods-AWSCognito" -l"Pods-AWSCore" -l
"Pods-AWSDynamoDB" -l"Pods-AWSEC2" -l"Pods-AWSElasticLoadBalancing" 
-l"Pods-AWSKinesis" -l"Pods-AWSLambda" -l"Pods-AWSMachineLearning" 
-l"Pods-AWSS3" -l"Pods-AWSSES" -l"Pods-AWSSNS" -l"
Pods-AWSSQS"-l "Pods-AWSSimpleDB" -l"Pods-Bolts" -l"Pods-FMDB" 
-l"Pods-GZIP" -l"Pods-Mantle" -l"Pods-Reachability" -l"Pods-TMCache" 
-l"Pods-UICKeyChainStore" -l"Pods-XMLDictionary" -l"sqlite3" -l
"z"-framework "Accelerate" -framework "AssetsLibrary" 
-framework "CoreLocation" -framework "Foundation" -framework
"ImageIO" -framework "Security" -framework "SystemConfiguration"
-framework "UIKit" -weak_framework "UIKit"
 OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)   

構成ファイルが正しく機能しない場合は、Other Linker フラグを $(inherited) に設定します

于 2015-07-07T04:52:33.877 に答える
-1

この解決策は、私にとって唯一うまくいった方法です。CordovaLib 設定に移動し、arm64 を有効なアーキテクチャに追加します。

于 2015-05-25T15:01:36.307 に答える