2016-01-14 1 views
2

Я пытаюсь скомпилировать библиотеку C++ для использования с Android-приложением. Я использую CMake для создания make-файла, но когда я настраиваю сценарий CMake, конфигурация принимает «mips64el» в качестве ссылки на компиляцию (CMAKE_AR, CMAKE_ASM_COMPILER, CMAKE_C_COMPILER и т. Д.). Этот компилятор несовместим с флагами, сгенерированными в make-файле, поэтому процесс сборки выходит из строя.Как избежать использования mips64el с использованием CMake при скрещивании для Android

Самое странное, что на втором ПК такая же конфигурация определяет «arm-linux» как ссылку на компиляцию.

В качестве дополнительного примечания, я использую Ubuntu 14.04 в обоих компьютерах. Я определяю «armeabi-v7a» как Android ABI и уровень API Android как 9. Кроме того, я включил путь к библиотекам NDK (android-ndk-r10c) в переменных среды (как ANDROID_NDK и в переменной PATH) ,

Любое sugestion?

+0

Вы можете установить 'arch' и' CMAKE_x_COMPILER_TARGET'. – usr1234567

+0

Я попытался определить CMAKE_CXX_COMPILER_TARGET = arm-linux-androideabi, аналогично тому, что объясняется в «https://cmake.org/cmake/help/v3.0/manual/cmake-toolchains.7.html», но ничего не изменилось , – goe

+0

Какой ndk у вас есть на компьютере, который работает? Я рекомендую вам загрузить последнюю версию, чтобы избежать этой конфигурации, иногда с ошибками 64 бит. Я буду использовать: android-ndk-r10e-linux-x86_64.bin. API 9 очень старый, если не удается с этой версией NDK, попробуйте поместить API 14. – vgonisanz

ответ

1

Ошибка была в самой инструментальной цепочке. Похоже, что библиотеки на первом компьютере игнорировались на этапе конфигурации, потому что те версии библиотек, которые не указаны в инструментальной цепочке, поэтому единственными доступными конфигурациями были mips64el.

Я обновил файл toolchain от this github репозитория, и он работает правильно сейчас.