2

我在 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

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

4

3 回答 3

1

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

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

于 2012-09-24T11:21:23.317 回答
0

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

于 2014-05-19T05:18:03.727 回答
-3

编辑重新:最新的问题修订:

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 头文件夹在别处。

于 2012-09-24T13:21:33.830 回答