LLVM теперь является зонтичным проектом, и он содержит несколько модульных и многократно используемых технологий компилятора и цепочки инструментов.Вы можете проверить более подробную информацию на Инфраструктура компилятора LLVM .
Для Android NDK llvm стал цепочкой инструментов по умолчанию, так как r13b и gcc были удалены с r18b.
Согласно каталогу инструментальных цепочек toolchains/llvm/prebuilt/darwin-x86_64
, llvm поддерживает все ABI, то есть x86, x86_64, arm, arm64.
Возможно, в будущих выпусках NDK будет только один каталог llvm
в каталоге toolchains
, когда все связанные с gcc инструменты, заголовки и библиотеки полностью перенесены в llvm.
Ссылки, которые могут помочь: Переменная пути Android NDK для команды "strip" в цепочке инструментов сборки CMake
Обновления
Просто провел быстрый тест на разных ревизиях NDK, чтобы проверить конфигурации для --gcc-toolchain
и --sysroot
, которые предназначены для кросс-компиляции.
На r16b
--target=armv7-none-linux-androideabi
--gcc-toolchain=~/ndks/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
--sysroot=~/ndks/android-ndk-r16b/sysroot
На r17c
--target=armv7-none-linux-androideabi
--gcc-toolchain=~/ndks/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
--sysroot=~/ndks/android-ndk-r17c/sysroot
На r18b
--target=armv7-none-linux-androideabi19
--gcc-toolchain=~/ndks/android-ndk-r18b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
--sysroot=~/ndks/android-ndk-r18b/sysroot
На r19b
--target=armv7-none-linux-androideabi19
--gcc-toolchain=~/ndks/android-ndk-r19b/toolchains/llvm/prebuilt/darwin-x86_64
--sysroot=~/ndks/android-ndk-r19b/toolchains/llvm/prebuilt/darwin-x86_64/sysroot
Как показано выше, до NDK r19b , NDK использует компилятор clang, но --gcc-toolchain
и --sysroot
настроены как более старые пути для инструментов сборки, заголовков и библиотек.
Но, , поскольку NDK r19b , --gcc-toolchain
и --sysroot
настроены как новые цепочки инструментов llvm , т.е. toolchains/llvm/prebuilt/darwin-x86_64
, и инструменты (например, будут использованы заголовочные файлы ranlib, ar, strip и т. д.) и библиотеки «версии llvm».
Также обратите внимание, что toolchains/llvm/prebuilt/darwin-x86_64
содержит поддержку для всех ABI Android, то есть aarch64-linux-android
для arm64-v8a , arm-linux-androideabi
для armeabi-v7a , i686-linux-android
для x86 , x86_64-linux-android
для x86_64 .
Итак, вы можете попробовать NDK r19b, если хотите просто использовать набор инструментов llvm.