web-dev-qa-db-ja.com

Xcode 4 Final-armv6ライブラリとリンクする際の「armv6 armv7」の問題

Xcode 4 finalまで(私は3.latestと4 GMを使用していました)まで、これは起こりませんでした。xcode4 finalバージョンにアップグレードすると、リンクを取得し始めましたarmv7バージョンを私のarmv7以外のライブラリとリンクしようとしたときのエラー(私のプロジェクトはデフォルトの標準armv6 armv7有効なアーキテクチャで設定されています):

ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7: -- list of symbols --

Armv6バージョンは正常にコンパイルされますが、全体的なコンパイルプロセスは77のリンクエラーで失敗します。

これは予想される動作であり、armv6 libを使用してarmv7にリンクしないことを理解しています。修正は私のプロジェクトをarmv6のみに設定することです。ここでの私の質問は、なぜこれが以前のバージョンのxcodeで機能していたのですか?

Armv6のみに設定すると、次の警告が表示され始めます。

Check dependencies

[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").

警告が表示されたくありません:-)同様の問題がある人はいますか?

おかげで、

フェルナンド

17
cusquinho

[プロジェクト]-> [ビルド設定]-> [アーキテクチャ]タブで、[アクティブアーキテクチャのビルド]を[はい]に変更しました。

22
Rick

IOS SDK 4.3では、リンカがarmv7バイナリでarmv6ライブラリの使用を拒否するように見えます-これは以前はそうではありませんでした。

そのため、私は http://code.google.com/p/ios-static-libraries/ プロジェクトを更新して、armv6バージョンとarmv7バージョンの両方のライブラリを生成する必要がありました。

7
Pol

いくつかのデモクラスを含むサードパーティフレームワークをプロジェクトに追加しましたが、それを正常に実装すると、それらのデモクラスを削除し、それ以降エラーが発生し始めましたError "ld:......... 、ファイルはユニバーサルですが、a(n)アーキテクチャarmv6のarmv6スライスが含まれていません "

私は一日中頭を掻いた後、翌朝この解決策が仲間のiphone仲間に役立つかもしれないと思いましたcoz私は痛みを知っています

ターゲット->「プロジェクトのターゲット」->情報を見る->アクティブアーキテクチャの構築のみをYESに設定

それでおしまい..

3
Kiran S

同じ問題があった。でも理由は違うと思います。シミュレータ用に構築されたlibrary.aファイルを使用していて、それをデバイスで実行しようとしました。シミュレータとデバイスには異なる.aファイルが必要であることがわかりました。これが誰かに役立つことを願っています;)

1
Zaraki

これがなぜxcode 4の最終バージョンでのみ発生し始めたのかはまだわかりませんが、非常に数日前に、私の外部ライブラリ(sslとcrypto)がgoogleコードプロジェクトのarmv6とarmv7の両方に対してコンパイルされていることがわかりました。

http://code.google.com/p/ios-static-libraries/

これにより、armv6用とarmv7用の2つの異なるライブラリ検索パスを定義した場合に問題が修正されます。

おかげで、

0
cusquinho