web-dev-qa-db-ja.com

アーキテクチャi386のMacOSXファイル '/usr/lib/libSystem.B.dylib'用にビルドされたdylibに対してリンク

最近、開発中のMacBookをクラシックなMacBook(32ビット)からMacBook Air(64ビット)に切り替えました。 XCode 4を実行している古いMacBook(32ビット)で作成されたプロジェクトを開こうとしています。

プロジェクトは、PhoneGap 1.7.0で作成されたPhoneGapアプリケーションです。

私の新しいMacBook Air(64ビット)はXCode 5を実行しています

開発者のプロファイルを古いMacBookから新しいMacBook Airにインポートしました。しかし、実行しようとすると、次のエラーメッセージが表示されます。

enter image description here

enter image description here

私はビルド設定のアーキテクチャをarmv7に変更しようとしましたが、まだ運がありません:(

このエラーが発生する理由と修正方法を知っている人はいますか?

ありがとう

19
Farhan Ahmad

結局のところ、アプリケーションがarmv7をサポートしていない場合、XCode 5はデフォルトのアーキテクチャをarmv7に変更します。 Cordova 1.7.0を実行していますが、そのバージョンはarmv7アーキテクチャをサポートしていません。

アーキテクチャの問題を修正します。

  1. [〜#〜] all [〜#〜]アーキテクチャをBuild Settingsから削除しました-> Valid Architecture
  2. armv6Build Settingsに追加-> Valid Architecture enter image description here


libSystem.B.dylibの問題を修正:

  1. /usr/lib/libSystem.B.dylibBuild Settingsから削除しました-> Linking-> Other Linker Flags

  2. -weak_libraryBuild Settingsから削除しました-> Linking-> Other Linker Flags enter image description here

26
Farhan Ahmad

Xcode 5は、シミュレーター(1)およびiOS(2)用のライブラリーをビルドするように要求します。次に、これらをマージして(3)ファットバイナリにして、メインプロジェクトにリンクします。 Xcodeがメインプロジェクトのビルドに使用しているのと同じフラグを使用します(スクリーンダンプに表示されます)。

私が行う一般的なGNUツールチェーン変数で表現:

1。シミュレーターのライブラリーの作成

CC=clang
IPHONEOS_DEPLOYMENT_TARGET=7.0
PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH"
CFLAGS="-Arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -mios-simulator-version-min=7.0"

2。iOS用のライブラリの構築

CC=clang
IPHONEOS_DEPLOYMENT_TARGET=7.0
PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH"
CFLAGS="-Arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -miphoneos-version-min=7.0"

。ファットバイナリへのマージ

使用するものに応じて、.aまたは.dylibのいずれかを選択します。

lipo -create "your armv7 lib".a     "your simulator lib".a     -output "your lib".a
lipo -create "your armv7 lib".dylib "your simulator lib".dylib -output "your lib".dylib
1
such