arm-linux-androideabi-g++ 找不到 header cstdarg

arm-linux-androideabi-g++ can not find header cstdarg

尝试使用 arm-linux-androideabi-g++ 从 linux cross-compile 一个 android 应用程序,我得到一个错误,header 文件 cstdarg 不能找到了。

common.h:27:19: fatal error: cstdarg: No such file or directory
compilation terminated.

如果我查看 /usr/arm-linux-androideabi/include/,header 不存在,但存在其他 c++ header 文件。我该如何解决这个问题?

<cstdarg> 不是系统 header,因为它来自 C++ 标准库。看起来你错过了将 C++ headers 添加到命令行。它们位于 $ANDROID_NDK/sources/cxx-stl/ 下。当然,请确保您使用 header 来实现适当的库。

您可能还需要包含 complier-specific C-headers(至少 <stdarg.h>,因为它被 <cstdarg> 使用)。

一些标准 header 是 compiler-specific,因为它们使用了一些 compiler-specific 扩展、内在函数等。 <stdarg.h>就是其中之一。由于它们的性质,将它们放在通用的 sysroot include 目录中没有多大意义。在 $ANDROID_NDK/toolchains/ 目录下查找。