5

「マスター」スタティック ライブラリ ターゲットを持つ Xcode プロジェクトがあります。これには、他の Xcode プロジェクトの他のスタティック ライブラリの束が含まれています。

「Optimized (armv6 armv7)」のマスター ライブラリ ターゲットをビルドすると、CreateUniversalBinary ステップ中の最後のフェーズでエラーが発生します。マスター ライブラリに含まれるライブラリの .o ファイルごとに、次のエラーが報告されます (たとえば、FBConnectGlobal.o ファイル)。

warning for architecture: armv6 same member name (FBConnectGlobal.o) 
in output file used for input files: /Developer_Beta/Builds/MTToolbox/MTToolbox.build/Debug-iphoneos/MTToolbox.build/Objects-normal/armv6/libMTToolbox.a(FBConnectGlobal.o) 
and: /Developer_Beta/Builds/MTToolbox/MTToolbox.build/Debug-iphoneos/MTToolbox.build/Objects-normal/armv7/libMTToolbox.a(FBConnectGlobal.o) 
due to use of basename, truncation and blank padding

最後に、Xcode はビルドが成功したことを通知します。ただし、アプリケーション プロジェクトで最終スタティック ライブラリを使用すると、ビルドの一部 (armv6) で重複するシンボルが検出され、ビルドの他の部分 (armv7) でシンボルが見つからないため、ビルドされません。

これを修正する方法はありますか?

M

4

2 に答える 2

5

私はそれが答えだとはまったく思わない。そこに2つのアーキテクチャがなければ、完全に機能します。リンクに示されている例では、ライブラリ a、b、および c を 1 つのライブラリにリンクし、それとリンクすることができます。

Carl が抱えている問題は、ライブラリに 2 つの異なるアーキテクチャ (arm6 と arm7) があり、リンカーがそれらを正しく解決できないことです。

問題が見つかりました。私が知る限り、libtoolのバグです。解決策については、私の投稿を参照してください。

https://binaryfinery.wordpress.com/2010/06/11/universal-static-library-problem-in-iphone-sdk/

于 2010-06-11T03:59:46.563 に答える
1

私が見つけたもう1つの修正は、アーキテクチャを「armv6」に設定することです。ARCHS_STANDARD_32_BITがarmv6から「armv6armv7」に変更されました。これにより、上記で説明したlibtoolのバグが悪化します。明らかに、armv7に最適化されたバイナリは生成されませんが、iPhone4では正常に動作するはずです。

于 2011-12-26T09:46:40.250 に答える