2014-09-29 5 views
3

Я пытаюсь использовать tcdrain вызов функции, определенной в termios.h путем компиляции моего кода на C с андроид НДК.tcdrain с NDK для набора инструментов андроида

У меня возникли проблемы, потому что, когда я строю новейшие андроид NDK, tcdrain не определен в termios.h, однако, если я иду внутри андроида исходного кода он определен в termios.h для бионических.

Например: https://github.com/android/platform_bionic/blob/master/libc/include/termios.h#L44

Но когда я строю НДК, это, кажется, другой termios.h файл в SYSROOT/USR/включать/termios.h?

Почему в новейших ndk нет одинаковых файлов include, таких как новейшие файлы bionic/libc?

ответ

3

Исходный код связанно состояние, что эти функции определены только в том случае имеет место следующего

#if __ANDROID_API__ >= 21 

так как nayuta сказал, что вы будете иметь tcdrain только с средой разработки сконфигурированной с --platform=android21.

Если вы не можете использовать plafform android21, вы все равно можете определить сами функции, которые вам нужны.

В случае tcdrain возможной замены будет

#define tcdrain(fd) ioctl(fd, TCSBRK, 1) 
1

Вы настроили среду сборки с помощью --platform=android21 или более поздней?

Перед андроидом 5.0, api level 20 и старше, объявления функций заменяются android/legacy_termios_inlines. h.

Если вы настроите для Android 5.0 или новее, вы можете использовать tcdrain.

 Смежные вопросы

  • Нет связанных вопросов^_^