Каковы наиболее важные функции POSIX, недоступные в Android?
Я собираюсь перенести большой проект на С++ (какой-то библиотечный проект, который не содержит абсолютно никакого графического интерфейса) для Android. Это на самом деле проект Visual С++, но он будет перенесен в Linux как промежуточный шаг. Я знаю, что Android не является "полным" Linux и не претендует на предоставление всех функций POSIX, но я также знаю, что на Android существует множество "функций POSIXish", используя NDK.
Теперь мой реальный вопрос:
Каковы самые большие/самые важные функции, которые НЕ доступны на Android по сравнению с полным набором POSIX? Поэтому я могу помнить об этом при выполнении переноса с Visual С++ на Linux GCC.
Я попытался найти что-то в Google, но не нашел ничего полезного, просто кое-где кое-что упомянул, что на Android есть некоторые функции POSIX...
Ответы
Ответ 1
Bionic перекодирует Google. Он небольшой, но оптимизирован для Android.
Единственная большая вещь, которую я знаю о том, что она отсутствует, действительно является функцией pthread_cancel()
.
Мой опыт в том, что если вы успешно переносите его на GNU/Linux, без вызовов pthread_cancel()
, вы должны быть в основном в порядке.
Кстати, какую библиотеку вы пытаетесь построить? Что он использует? Сеть, потоки...
PS: Даже Linux не полностью POSIX.
Ответ 2
общая память - это то, что вы можете найти по-разному в Android. был сильно ударил, пытаясь работать с shm_open и shm_unlink на ядре Android. Android реализует асинхронную общую память (ashmem).
Ответ 3
Самая очевидная недостающая функция - pthread_cancel()
.
В этом блоге есть дополнительные сведения: http://codingrelic.geekhold.com/2008/11/six-million-dollar-libc.html
Хороший обзор Bionic: https://android-platform.googlegroups.com/attach/0f8eba5ecb95c6f4/OVERVIEW.TXT?gda=HWJaO0UAAAB1RXoVyyH5sRXFfLYnAq48KOFqr-45JqvtfiaR6gxIj4Qe8cBqW3BaWdSUPWi_jHqO3f1cykW9hbJ1ju6H3kglGu1iLHeqhw4ZZRj3RjJ_-A&view=1&part=4