我尝试使用android ndk编译我的c代码,尝试使用 termios.h 中定义的 tcdrain 函数调用。
我遇到问题,因为当我构建最新的android ndk时, tcdrain 未在termios.h中定义,但是如果我进入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与最新的bionic / libc文件没有相同的包含文件?
答案 0 :(得分:4)
您链接的源代码声明只有在以下情况下才会定义这些函数
#if __ANDROID_API__ >= 21
所以,正如nayuta所说,只有使用tcdrain
配置的构建环境才会--platform=android21
。
如果你不能使用plafform android21,你仍然可以自己定义你需要的功能。
如果是tcdrain,可能会有替换
#define tcdrain(fd) ioctl(fd, TCSBRK, 1)
答案 1 :(得分:1)
您是否使用--platform=android21
或更高版本配置构建环境?
在android 5.0,api 20级及更早版本之前,函数声明被替换为android/legacy_termios_inlines. h
。
如果您为Android 5.0或更高版本配置,则可以使用tcdrain
。