【问题标题】:arm-linux-androideabi-g++ can not find header cstdargarm-linux-androideabi-g++ 找不到头文件 cstdarg
【发布时间】:2017-11-06 16:01:06
【问题描述】:
尝试使用 arm-linux-androideabi-g++ 从 linux 交叉编译一个 android 应用程序,我收到一个错误,即找不到头文件 cstdarg。
common.h:27:19: fatal error: cstdarg: No such file or directory
compilation terminated.
如果我查看 /usr/arm-linux-androideabi/include/,头文件不存在,但存在其他 c++ 头文件。我该如何解决这个问题?
【问题讨论】:
标签:
android
c++
linux
android-ndk
cross-compiling
【解决方案1】:
<cstdarg> 不是系统头文件,因为它来自 C++ 标准库。看起来您错过了将 C++ 标头添加到命令行。它们位于$ANDROID_NDK/sources/cxx-stl/ 下。当然,请确保您使用标头来实现适当的库。
此外,您可能需要包含特定于编译器的 C 标头(至少 <stdarg.h>,因为它被 <cstdarg> 使用)。
一些标准头文件是特定于编译器的,因为它们使用一些特定于编译器的扩展、内在函数等。 <stdarg.h> 就是其中之一。由于它们的性质,将它们放在通用 sysroot 包含目录中没有多大意义。查看$ANDROID_NDK/toolchains/ 目录下。