我正在尝试通过将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)

10-08 17:03