У меня есть приложение для iPhone, которое работает на устройстве.Теперь мне нужно запустить его в симуляторе.
Он использует проект с открытым исходным кодом (http://site.icu -project.org / ), который я строю из командной строки для создания arm-совместимые .a
файлы.Я могу связать их с моим проектом iPhone, и он будет работать на устройстве.
Если я переключу цель на Simulator, сборка завершится неудачно, как я и ожидал:
ld: warning: в libicudata.a файл был создан для неподдерживаемого формата файлов, который не является связываемой архитектурой (i386)
Но если я использую библиотеки, скомпилированные для локального использования (x86_64), я получу та же ошибка , которая должна быть сбита с толку.Нужно ли указывать третью архитектуру для симулятора?Который из?Как настроить конфигурацию?
Для справки, вот как я настроил проект icu для двух разных целей: Как создать ICU, чтобы я мог использовать его в приложении для iPhone?
Отредактировано, чтобы добавить:
Как предложил Гийом (и Подключите приложение iPhone к PostgreSQL с помощью Libpq подтверждено), теперь я вижу, что эмулятор нуждается32-битная сборка.Итак, последняя часть: как мне установить конфигурацию ?
В библиотеке есть стандартный скрипт configure
, насколько я знаю, но я все еще довольно нов в этом.
Отредактировано, чтобы добавить:
Я дошел до этого далеко, но ссылки на i686 явно неверны.
Я не знаюесли i386 считается кросс-компиляцией, если мне нужны опции "host" и "target" тоже.
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