Android не полностью совместим с POSIX. Сначала я могу заметить библиотеку по умолчанию c. Как вы знаете, это называется glibc. Но у Android есть своя библиотека c - bionic. Вот несколько заметок.
Некоторые функции в заголовках POSIX и системных вызовов Bionic являются окурки или оберток для Android-специфического поведения, вызывая непреднамеренное поведение в некоторых случаях.
Android использует Linux-ядро, поэтому вы можете сказать, что он совместим с POSIX. Но в целом Android не соответствует спецификациям Unix, таким как POSIX. Также вы можете прочитать что-то вроде этого
Bionic не включает C++ обработки исключений, возможно, как Google делает не использовать исключение C++ и Java исключения доступны после того, как виртуальная машина Java запускается
Bionic делает не включают в себя стандартную библиотеку шаблонов, и разработчики должны включить его вручную, если им нужно это
Там оТЛИЧНЫЙ обычай строить NDK - CrystaX NDK
Ключевые особенности CrystaX НДК:
Широкие символы. Google NDK не поддерживает широкие символы в C или C++. С CrystaX NDK вы получаете полную стандартную совместимую широкую поддержку . Вы можете легко переносить существующий код, который использует широкие символы/строки/потоки или написать новый код.
Самые последние инструментальные цепочки The CrystaX NDK включает в себя самые последние версии компиляторов GCC и Clang, а также конюшни. Это позволяет разработчикам использовать новые языковые возможности (такие как новые возможности C++ 11 ). Все компиляторы построены с оптимизацией высокого уровня , которая позволяет генерировать наиболее эффективный код для целевого оборудования .
C++ 11 Поддержка Поскольку CrystaX NDK включает в себя самые последние версии из GCC и Clang, он поддерживает множество новых возможностей C++ 11, перечисленных на C++ 0x/C++ 11 Поддержка в GCC и C++ 98 и C++ 11 в Clang. В дополнение CrystaX NDK предлагает полностью работающие классы C++ 11 std :: thread, std :: mutex, std :: chrono и т. Д. Эти классы не являются , доступными в Google NDK из-за отсутствия функциональности в Android Bionic libc , Мы исследовали эту проблему и исправили ее, , поэтому в CrystaX NDK вы можете просто использовать их и забыть о ifdefs.
Поддержка Objective-C Поддерживаются только языки, поддерживаемые Google NDK: C и C++. CrystaX NDK добавляет поддержку Objective-C в дополнение к C и C++. На данный момент поддерживается только основной язык; работа над . Какаоподобные библиотеки находятся в процессе. Чтобы начать использовать Objective-C в проекте , просто добавьте исходные файлы с расширением .m (Objective-C) или .mm (Objective-C++) и укажите их в LOCAL_SRC_FILES в Android.mk.
Продолжение следует ... Если вы не видите здесь замечательной функции, не не стесняйтесь обращаться к нам и просить об этом. Вы также можете использовать нашу проблему/ошибку трекер, чтобы сообщать об ошибках или запросах функций. И, конечно же, вклады приветствуются!
Вы можете найти более подробную информацию о Official CrystaX NDK site
Даже Linux не полностью совместим с POSIX :) –
@ShmilTheCat Я думал, что он просто не сертифицирован, потому что он стоит денег? – sashoalm
IMO его более чем проблемы с расходами, см. Https://personal.opengroup.org/~ajosey/tr28-07-2003.txt –