Я пытаюсь перекрестно скомпилировать llvm/clang для Android arm.Перекрестный компилятор clang для Android arm
Я экспортировать CC/переменные CXX к рычагу-Linux-androideabi кросс-компиляторов, а затем из моей папки сборки я выполняю:
cmake -G "Unix Makefiles" --target arm-linux-androideabi --sysroot=$NDK/platforms/android-21/arch-arm/ ../llvm
папка сборки находится в том же каталоге с исходным LLVM кодом ,
я получаю ошибку:
rm-linux-androideabi-g++: error: unrecognized command line option '-m32'
Я знаю, что есть что-то делать с г ++ multilib
для arm-linux
, но я не могу найти его в НДК.
Я также пробовал все шаги, которые перечислены here, и руководство найдено here, не повезло.
Любая помощь была бы принята с благодарностью. Благодаря!
EDIT: Теперь я использую следующую команду:
cmake -G "Unix Makefiles" --prefix=../outarm --target arm-linux-androideabi --sysroot=$NDK/platforms/android-21/arch-arm/ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PIC=False -DCMAKE_CROSSCOMPILING=True -DLLVM_TABLEGEN=../osxbuild/bin/llvm-tblgen -DCLANG_TABLEGEN=../osxbuild/bin/clang-tblgen -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM ../llvm
Компиляция Теперь начинается, но он останавливается на 14% с ошибкой:
arm-linux-androideabi-g++: error: unrecognized command line option '-bundle'
EDIT2: Я удалил все относительные пути к абсолютным. И изменил компилятор с gcc на clang. Кланг признает -bundle
, но он не использует его. Полная команда ж/ошибки сейчас: Команда:
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$HOME/Desktop/clang-compilation/outarm -DCMAKE_BUILD_TYPE=Release -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-androideabi --sysroot=$NDK/platforms/android-21/arch-arm/ -DLLVM_ENABLE_PIC=False -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM -DLLVM_TABLEGEN=$HOME/Desktop/clang-compilation/osxbuild/bin/llvm-tblgen -DCLANG_TABLEGEN=$HOME/Desktop/clang-compilation/osxbuild/bin/clang-tblgen -DCMAKE_CXX_FLAGS='-I$HOME/android/toolchains/gcc/include/c++/4.9/arm-linux-androideabi -I$HOME/android/toolchains/gcc/include/' $HOME/Desktop/clang-compilation/llvm
make -j12
Сообщение об ошибке: clang36 ++ предупреждение: аргумент не используется во время компиляции: 'расслоением' /Users/Пасхалис/Android/компилированные инструменты/ССАГПЗ/бен /../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: фатальная ошибка: -f/- вспомогательное может не быть используется без -shared
После нескольких дней борьбы с флагами и зависимостями кросс-компиляции мне удалось получить рабочий компилятор. Я немного изменил эту [работу] (https://github.com/termux/termux-packages) и создал clang, gcc и все их зависимости! – Paschalis