尝试使用arm-linux-androideabi-g ++从linux交叉编译Android应用程序,我收到一个错误,找不到头文件cstdarg。
{{1}}
如果我查看/ usr / arm-linux-androideabi / include /,标题不存在,但存在其他c ++头文件。我该如何解决这个问题?
答案 0 :(得分:1)
<cstdarg>
不是系统头,因为它来自C ++标准库。您似乎错过了将C ++标头添加到命令行。它们位于$ANDROID_NDK/sources/cxx-stl/
下。当然要确保您使用标头来实现适当的库。
此外,您可能需要包含特定于编译器的C标头(<stdarg.h>
使用的至少<cstdarg>
)。
某些标准头文件是特定于编译器的,因为它们使用一些特定于编译器的扩展,内在函数等等。 <stdarg.h>
就是其中之一。由于它们的性质,没有太多意义将它们放到通用的sysroot include目录中。查看$ANDROID_NDK/toolchains/
目录下的内容。