在为Android构建V8时找不到sys / cdefs.h

时间:2014-05-21 11:32:55

标签: android-ndk g++ v8

我正在尝试为Android构建V8(通过https://code.google.com/p/v8/wiki/D8OnAndroid):

svn checkout http://v8.googlecode.com/svn/trunk/ v8
cd v8
make dependencies
ANDROID_NDK_ROOT="/home/bart/software/android-ndk-r9d" make android_arm.release

但是,最后一个命令失败:

make[1]: Entering directory `/home/bart/Desktop/v8'
make[2]: Entering directory `/home/bart/Desktop/v8/out'
  AR(target) /home/bart/Desktop/v8/out/android_arm.release/obj.target/tools/gyp/libv8_base.arm.a
  CXX(host) /home/bart/Desktop/v8/out/android_arm.release/obj.host/v8_base.arm/src/accessors.o
In file included from /usr/include/stdio.h:27:0,
                 from ../src/../include/v8stdint.h:11,
                 from ../src/../include/v8.h:18,
                 from ../src/v8.h:29,
                 from ../src/accessors.cc:5:
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
 #  include <sys/cdefs.h>
                         ^
compilation terminated.
make[2]: *** [/home/bart/Desktop/v8/out/android_arm.release/obj.host/v8_base.arm/src/accessors.o] Error 1
make[2]: Leaving directory `/home/bart/Desktop/v8/out'
make[1]: *** [android_arm.release] Error 2
make[1]: Leaving directory `/home/bart/Desktop/v8'
make: *** [android_arm.release] Error 2

缺少的文件 sys / cdefs.h 。存在于 NDK / platforms / * / arch-arm / usr / include 中,但显然编译器无法找到它。我错过了一步吗?

更新:经过仔细检查,看起来编译器正在从我的主机系统(即Linux)读取 /usr/include/features.h 。这似乎不合适,所以是的,我错过了一个应该将过程指向 NDK / platforms / * / arch-arm 的步骤吗?

我正在使用NDK 9d(Linux x86_64)

2 个答案:

答案 0 :(得分:7)

经过一番挖掘后,我发现V8的构建过程同时具有目标和主机步骤。我只需要在我的主机系统(apt-get install libc6-dev-i386 g++-multilib)上安装丢失的文件,然后编译成功。

现在,我仍然不明白为什么需要东道主的任何东西,但我仍然会接受这场胜利。

答案 1 :(得分:4)

在Ubuntu 14.04 i686上无法正常工作。 尝试apt-get install gcc-multilib

相关问题