私はデバイス上で動作するiPhoneアプリを持っています。今私はシミュレータでそれを実行する必要があります。Xcode iOS Simulatorで実行されるようにライブラリを設定するには?
オープンソースプロジェクト(http://site.icu-project.org/)を使用しています。これをコマンドラインからビルドして、アーム互換の.a
ファイルを作成します。私はこれらを私のiPhoneプロジェクトとリンクすることができ、それはデバイス上で動作します。
私は予想通り、私は、ビルドが失敗し、シミュレータにターゲットを切り替える場合:
LD:警告:libicudata.aで、ファイルがリンクされて アーキテクチャではありませんサポートされていないファイル形式のために建設されたが(I386)
しかし、私は地元の使用(x86_64版)用にコンパイルLIBSを使用している場合、私は困惑する持っている同じエラーを取得。シミュレータの3番目のアーキテクチャを指定する必要はありますか?どれ?構成を設定するにはどうすればよいですか? 、私は今ことを見ギョームが示唆したように
(とConnect iPhone App to PostgreSQL Using Libpqが確認された):追加するHow to build ICU so I can use it in an iPhone app?
編集:
参考が、これは私が2つの異なる標的のためICUプロジェクトの構成方法でありますエミュレータには32ビットのビルドが必要です。最後の部分はです。どのように設定するのですか?
ライブラリーには標準のconfigure
スクリプトがありますが、私は知っていますが、まだかなり新しいです。
を追加するように編集:
私はここまで得てきましたが、i686のへの言及は明らかに間違っています。
「ホスト」と「ターゲット」オプションが必要な場合は、i386がクロスコンパイルと見なされるかどうかわかりません。
ICU_PATH=/Users/eric.grunin/Documents/dev/icu2
DEVROOT=/Developer/Platforms/iPhoneSimulator.platform/Developer
SDKROOT=$DEVROOT/SDKs/iPhoneSimulator4.3.sdk
SYSROOT=$SDKROOT
ICU_FLAGS="-I$ICU_PATH/source/common/ -I$ICU_PATH/source/tools/tzcode/ "
export CXXPP=
export CXXPPFLAGS=
export CPPFLAGS="-I$SDKROOT/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I$SDKROOT/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I$SDKROOT/usr/include/ -I$SDKROOT/usr/include/c++/4.2.1/armv7-apple-darwin10/ -I./include/ -miphoneos-version-min=2.2 $ICU_FLAGS"
export CFLAGS="$CPPFLAGS -pipe -no-cpp-precomp -isysroot $SDKROOT"
export CPP="$DEVROOT/usr/bin/cpp $CPPFLAGS"
export CXXFLAGS="$CFLAGS"
export CC="$DEVROOT/usr/llvm-gcc-4.2/bin/i686-apple-darwin10-llvm-gcc-4.2"
export CXX="$DEVROOT/usr/llvm-gcc-4.2/bin/i686-apple-darwin10-llvm-g++-4.2"
export LDFLAGS="-L$SDKROOT/usr/lib/ -isysroot $SDKROOT -Wl,-dead_strip -miphoneos-version-min=2.0"
cd $ICU_PATH
mkdir simbuild
cd simbuild
$ICU_PATH/source/configure --enable-static --disable-shared
gnumake
しかし、私はそのライブラリにどのようなアーキテクチャを取り入れていますか? – egrunin
答えに必要なアーキテクチャを追加しました。 – Guillaume
ああ、私のlibは64ビット(x86_64)で、Simulatorは32ビット(i386)だと言っていますか? – egrunin