Android NDK -stdio.h:找不到sys / cdefs.h

时间:2012-09-24 11:11:29

标签: android android-ndk

我在android中构建一个示例本机应用程序,当我使用ndk -bild编译时,我得到了一个链接问题。我得到了以下错误

    arm-linux-androideabi-gcc -c -O2 -w -ansi -D_POSIX_SOURCE -I. -I../bozorth/include -   I./include/ "-D __MSYS__" "-D__NBISLE__"  src/BiomServerComponent.c -o src/BiomServerComponent.o
    In file included from src/BiomServerComponent.c:1:0:
    f:\android-ndk-r8b\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\../lib/gcc/arm-linux-androideabi/4.6.x-google/include-fixed/stdio.h:50:23: fatal error: sys/cdefs.h: No such file or directory
    compilation terminated.
    Makefile:25: recipe for target `src/BiomServerComponent.o' failed

我没有找到sys / cdefs.h或sys / _types.h,但是我在以下路径中找到了stdio.h

F:\android-ndk-r8b\platforms\android-9\arch-arm\usr\include

任何人都知道,如何链接这个标准头文件,

3 个答案:

答案 0 :(得分:1)

从表面上看,您的澄清似乎是您正在尝试#include NDK不支持的头文件;请记住,NDK不能提供100%覆盖您通常希望在编译器中找到的内容。

如果您直接包含这些文件,则应该包括<sys/types.h>

答案 1 :(得分:0)

我找到了答案。确保正确设置 - sysroot 标志。否则,ndk将默认为目录 toolchains \ arm-linux-androideabi-4.6 \ prebuilt \ windows \ lib \ gcc \ arm-linux-androideabi \ 4.6.x-google \ include-fixed 目录无法在 platforms \ android-9 \ arch-arm \ usr \ include 中找到目录后。我遇到了同样的问题。

答案 2 :(得分:-2)

编辑:最新的问题修订:

真正的问题是 - 当编译器真正位于toolchains\arm-linux-androideabi-4.6\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.6.x-google\include-fixed时,为什么编译器会在platforms\android-9\arch-arm\usr\include下查找头文件?在哪里有流氓-I选项? OP遇到问题的include下的toolchains文件夹看起来很残缺;它可能是GCC发行版的一件神器。真正的NDK头文件夹在其他地方。