tcdrain函数调用与ndk工具链为Android

时间:2014-09-29 16:50:46

标签: android linux android-ndk libc toolchain

我尝试使用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文件没有相同的包含文件?

2 个答案:

答案 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