我正在尝试使用android ndk编译我的C代码使用termios.h中定义的tcdrain函数调用。
我遇到了问题,因为当我构build最新的android ndk时, tcdrain没有在termios.h中定义,但是如果我进入android源代码,它在termios.h中定义为仿生。
例如: https : //github.com/android/platform_bionic/blob/master/libc/include/termios.h#L44
但是当我build立ndk时,似乎在sysroot / usr / include / termios.h中有一个不同的termios.h文件?
为什么最新的ndk没有包含最新的仿生/ libc文件?
链接的源代码声明,只有在以下情况下才定义这些函数
#if __ANDROID_API__ >= 21
所以,正如nayuta所说的,只有使用--platform=android21
配置的构建环境才能获得tcdrain
。
如果你不能使用平台android21,你仍然可以自己定义你需要的功能。
在tcdrain的情况下可能的替代品将是
#define tcdrain(fd) ioctl(fd, TCSBRK, 1)
您是否使用--platform=android21
或更高版本来配置您的构建环境?
在android 5.0,api level 20和更老的版本之前,函数声明被替换为android/legacy_termios_inlines. h
android/legacy_termios_inlines. h
。
如果你配置为android 5.0或更高版本,你可以使用tcdrain
。