Какой компилятор использует Android NDK?

Я пишу код ARM NEON для Android-приложения, и я боролся с некоторыми флагами компилятора, которые не распознаются. Позже я понял, что поддержка этих флагов была добавлена ​​совсем недавно и моя версия GCC старше. Я делаю все это в Windows и ограничусь тем, что могут предложить Cygwin. Вот мой вопрос: прежде чем я пойду и попытаюсь построить GCC 4.6.0 на своей машине под Windows и сделаю Cygwin таким, как это будет, это сработает для меня или NDK использует собственную версию GCC, и мое обновление не повлияет на нее ? Если да, возможно ли это использовать другой компилятор?

Solutions Collecting From Web of "Какой компилятор использует Android NDK?"

Сам NDK вызывает индивидуальный кросс-компилятор, построенный на компиляторе arm-eabi-gcc . Есть примеры того, как люди создают пользовательские инструментальные цепочки с использованием стандартных реализаций GCC с поддержкой наборов инструкций ARM, но это выход из моей лиги. Большинство материалов, которые я читал в прошлом, всегда обсуждались с помощью инструментальной цепочки, включенной в NDK, для компиляции собственного кода.

Следствие. Большинство людей, которые жаловались и вынуждены были создать свою собственную инструментальную цепочку, были людьми, которые были расстроены (предположительно) вспомогательной поддержкой C ++ для компилятора NDK toolchain. Я не могу говорить об этом, потому что некоторые из статей были старше, и Android так быстро меняется. Это также не было мнением, которое, кажется, появляется слишком часто.

Что касается NDK r8d, его можно изменить двумя способами (см. Andriod ndk ):

  • Для ndk-build экспортируйте переменную NDK_TOOLCHAIN_VERSION = 4.7 или добавьте ее в Application.mk.
  • Для автономных сборок добавьте параметр –toolchain = для make-standalone-toolchain.sh --toolchain=arm-linux-androideabi-4.7

Компилятор по умолчанию установлен в ndk / build / core / setup-toolchain.mk (см. NDK_TOOLCHAIN ​​и NDK_TOOLCHAIN_VERSION)

GCC устарел в пользу clang с NDK 11 (март 2016 года)

Упоминается в официальной истории изменений: https://developer.android.com/ndk/downloads/revision_history.html

Как переключаться между компиляторами задается по адресу:

  • Как переключиться между gcc и clang в Android NDK Revision 11?
  • Последние возможности C ++ 11 с Android NDK

И вы можете легко проверить это:

 enum CONSTEXPR {N = 256}; char s[N]; #ifdef __clang__ snprintf(s, N, "%s", "clang" __clang_version__); #else # ifdef __GNUC__ snprintf(s, N, "%s %d.%d.%d", "gcc", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__); # endif #endif 

Затем просто запишите s или верните его в TextView .