我正在尝试通过将android ndk编译为C代码来使用termios.h中定义的tcdrain函数调用。
我遇到问题是因为构建最新的android ndk时,不会在termios.h中定义tcdrain,但是,如果我进入android源代码,则会在termios.h中为仿生定义它。
例如:https://github.com/android/platform_bionic/blob/master/libc/include/termios.h#L44
但是,当我构建ndk时,它在sysroot/usr/include/termios.h中似乎有一个不同的termios.h文件吗?
为什么最新的ndk没有与最新的仿生/libc文件相同的包含文件?
最佳答案
您链接的源代码指出只有在以下情况成立时,才定义这些功能
#if __ANDROID_API__ >= 21
因此,正如nayuta所说,只有在配置了
tcdrain
的构建环境中,您才需要--platform=android21
。如果您不能使用plafform android21,则仍可以定义自己所需的功能。
如果使用tcdrain,则可能是
#define tcdrain(fd) ioctl(fd, TCSBRK, 1)