2014-09-29 81 views
3

我想通過我的編譯C代碼的Android NDK使用在termios.h定義tcdrain函數調用。tcdrain函數調用的Android

我有問題,因爲當我打造的最新的Android NDK,tcdrain沒有在termios.h中定義,但如果我去它在termios.h定義爲仿生Android源代碼內。

例如:https://github.com/android/platform_bionic/blob/master/libc/include/termios.h#L44

但是當我建立NDK的,它似乎有在SYSROOT/usr/include目錄/ termios.h不同termios.h文件?

爲什麼最新的NDK與最新的仿生/ libc文件沒有相同的包含文件?

回答

3

你的源代碼鏈接的狀態,這些功能僅定義,如果下式成立

#if __ANDROID_API__ >= 21 

如此,因爲那由多說,你將有tcdrain只用--platform=android21配置構建環境。

如果你不能使用plafform android21,你仍然可以自己定義你需要的功能。

在tcdrain一個可能的替代的情況下將是

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

您是否使用--platform=android21或更高版本配置您的構建環境?

在android 5.0,api level 20及更早版本之前,函數聲明被替換爲android/legacy_termios_inlines. h

如果您爲Android 5.0或更高版本進行配置,則可以使用tcdrain