strings.h中的Android NDK错误,可能是由于size_t中的错误

时间:2011-12-19 16:08:11

标签: android android-ndk

我在使用NDK为Android构建X11时遇到问题。我正在使用带有droid-wrapper的最新NDK。我已经更新了droid-wrapper来处理我正在构建的大部分内容,但它实际上只是增加了一堆编译器选项。我打印出它在下面使用的选项。我已经走得很远,但是我遇到了构建一些库的问题:

 CC     AuDispose.lo
droid-debug(compile): /opt/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -DHAVE_CONFIG_H -I. -I./include -I/home/rmason/androix/usr/include -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -fno-strict-aliasing -Wbad-function-cast -Wformat=2 -Wold-style-definition -Wdeclaration-after-statement -I/home/rmason/androix/usr/include -MT AuDispose.lo -MD -MP -MF .deps/AuDispose.Tpo -c AuDispose.c -fPIC -DPIC -o .libs/AuDispose.o -I/opt/android-ndk-r7/platforms/android-8/arch-arm/usr/include -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID -DSK_RELEASE -DNDEBUG -UDEBUG -march=armv5te -mtune=xscale -msoft-float -mthumb-interwork -fpic -fno-exceptions -ffunction-sections -funwind-tables -fstack-protector -fmessage-length=0
In file included from /opt/android-ndk-r7/platforms/android-8/arch-arm/usr/include/stdlib.h:42,
             from AuDispose.c:34:
/opt/android-ndk-r7/platforms/android-8/arch-arm/usr/include/strings.h:47: error: expected declaration specifiers or '...' before numeric constant
/opt/android-ndk-r7/platforms/android-8/arch-arm/usr/include/strings.h:47: error:     conflicting types for 'memset'
AuDispose.c: In function 'XauDisposeAuth':
AuDispose.c:44: error: too many arguments to function 'memset'
make[1]: *** [AuDispose.lo] Error 1
make[1]: Leaving directory `/home/rmason/androix/lib/libXau'
make: *** [install] Error 2

我看看strings.h,第47行是这样的:

void     bzero(void *, size_t);

我见过其他人在使用这种类型的线路时遇到问题,因为size_t是错误的值。有些人通过用内核的定义替换size_t来修复它。我的猜测是,我所包含的内容的顺序正在破坏我真正需要的一些定义。

如果人们喜欢整个故事,那么这里有一些背景知识:

我正在尝试使用稍加修改的droid-wrapper构建Androix。我制作了一个脚本(在我的github repo中作为androix-buildscript)来构建整个shebang。它会检查所有内容并构建所有内容。现在我的结果如下:

  • 成功:util / macros
  • 成功:proto / xproto
  • 成功:lib / libxtrans
  • 成功:xcb / proto
  • 成功:xcb / pthread-stubs
  • 失败:lib / libXau#strings.h错误
  • 失败:xcb / libxcb#缺少Xau
  • 成功:proto / xextproto
  • 成功:proto / kbproto
  • 成功:proto / inputproto
  • 失败:lib / libX11#missing libxcb
  • 失败:lib / libxkbfile#missing x11
  • 失败:app / xkbcomp#。/ xkbparse.c ... configure:错误:交叉编译时无法检查文件是否存在: * 没有规则可以使目标“安装”。停止。
  • 成功:xkeyboard-config
  • 成功:mesa / drm
  • 成功:proto / fixesproto
  • 成功:proto / damageproto
  • 成功:proto / xcmiscproto
  • 成功:proto / bigreqsproto
  • 成功:proto / compositeproto
  • 成功:proto / recordproto
  • 成功:proto / scrnsaverproto
  • 成功:proto / resourceproto
  • 失败:freetype#仍在努力弄清楚构建这个的最佳方法是什么,TODO
  • 成功:lib / libfontenc
  • 失败:lib / libXfont#missing fontsproto,TODO
  • 失败:lib / libXdmcp#与strings.h libXau问题类似的问题
  • 失败:pixman#与'Elf32_auxv_t'不同的问题,但可能与size_t的strings.h问题相同。它们都是面向DEFINE的问题。

感谢您花时间检查一下。我真的很难过。

1 个答案:

答案 0 :(得分:0)

我设法通过在strings.h中注释显示错误的行来完成make。我还在AuDispose.c中使用了memset而不是bzero。