Подтвердить что ты не робот

Какая инструментальная строка мне нужна для кросс-компиляции Clang для iOS

ОК, поэтому, прежде всего, я знаю, что это можно скомпилировать на iOS (armv7), потому что я прочитал документацию. Однако я не могу найти нужную инструментальную цепочку.

Итак, теперь, какие инструментальные средства я уже пробовал:

i686-apple-darwin10-cpp-4.2.1
i686-apple-darwin10-g++-4.2.1
i686-apple-darwin10-gcc-4.2.1

Вышеперечисленные кросс-компиляции для x86 (я на i386). Работает отлично. Но мне это не нужно

arm-apple-darwin10-cpp-4.2.1
arm-apple-darwin10-g++-4.2.1
arm-apple-darwin10-gcc-4.2.1

Вышеуказанные компиляции отлично, но не переходят на компиляцию, как я и ожидал, вместо этого он просто компилируется в мою текущую арку.

Я настоящий новичок в этом деле, на самом деле это моя первая попытка скомпилировать что-то.

UPDATE:

Вот команды, которые я пробовал (это для armv6; armv7 похож):

Configure:

../llvm/configure --host=arm-apple-darwin6 --target=arm-apple-darwin6 
--build=i386-apple-darwin --enable-optimized --disable-debug  
--disable-expensive-checks --disable-doxygen  --disable-threads

env vars:

    export DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer
export SDKROOT=$DEVROOT/SDKs/iPhoneOS$IOS_BASE_SDK.sdk

export CFLAGS="-arch armv6 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT -I$SDKROOT/usr/include/"

    export CPP="$DEVROOT/usr/bin/arm-apple-darwin10-cpp-4.2.1"
export CXX="$DEVROOT/usr/bin/arm-apple-darwin10-g++-4.2.1"
export CXXCPP="$DEVROOT/usr/bin/arm-apple-darwin10-cpp-4.2.1"
export CC="$DEVROOT/usr/bin/arm-apple-darwin10-gcc-4.2.1"
export LD=$DEVROOT/usr/bin/ld
export AR=$DEVROOT/usr/bin/ar
export AS=$DEVROOT/usr/bin/as
export NM=$DEVROOT/usr/bin/nm
export RANLIB=$DEVROOT/usr/bin/ranlib
export LDFLAGS="-L$SDKROOT/usr/lib/"

export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS

UPDATE: Цель этого кросс-компиляции - сделать библиотеку armv7 (armv6) не инструментом командной строки.

ПОЛУЧИТЬ ДРУГОЕ ОБНОВЛЕНИЕ: Я использовал следующее:

CC="$DEVROOT/usr/bin/clang"
CXX="$DEVROOT/usr/bin/clang++"

./llvm/configure --host=i386-apple-darwin --target=armv7-apple-darwin --build=armv7-apple-darwin --enable-optimized --disable-debug --disable-expensive-checks --disable-doxygen  --disable-threads --enable-targets=arm 

И мне удалось получить checking whether we are cross compiling... yes из инструмента configure. Тем не менее, make все еще выводит двоичный файл x86_64: (

4b9b3361

Ответ 1

В принципе, ваш вызов configure выглядит хорошо. Я пытаюсь снять несколько типичных ошибок:

  • Вы после make clean после каждой смены архитектуры?
  • Почему вы так уверены, что LD, RANLIB и т.д. вашей хост-системы отлично подходят для кросс-компиляции? Он перезапишет автоматически сконфигурированное значение LD. (Здесь отображается ошибка чтения "export LD = ld".)
  • Не могли бы вы проверить типичный компилятор и типичный вызов компоновщика в выводе make для их правильного использования инструментов кросс-компиляции?