为Rasberry pi交叉编译谷歌v8库

时间:2015-01-09 14:35:18

标签: c++ raspberry-pi cross-compiling v8

我遇到了为覆盆子pi交叉编译谷歌v8库的问题,并且在从网站编译官方样本时不断收到“非法指令”错误。这些是我遵循的步骤:

  1. 已下载交叉编译https://github.com/raspberrypi/tools/
  2. 克隆v8 git https://chromium.googlesource.com/v8/v8.git
  3. 从交叉编译工具导出CXX LINK指向arm-linux-gnueabihf-g++
  4. 运行make arm.release armv7=false hardfp=on snapshot=off armfpu=vfp armfloatabi=hard -j5
  5. 将生成的可执行文件shelld8从out / arm.release目录复制到pi(Raspbian内核版本3.6.11)并且工作正常。 这些步骤证明了交叉编译工具链的功能。
  6. 尝试运行链接到v8库的其他交叉编译软件时出现问题。例如来自https://developers.google.com/v8/get_started#intro的示例代码。 代码使用此命令进行交叉编译(与示例相同,只是更改了编译器)

    arm-linux-gnueabihf-g++ -I. hello_world.cc -o hello_world -Wl,--start-group out/x64.release/obj.target/{tools/gyp/libv8_{base,libbase,snapshot,libplatform},third_party/icu/libicu{uc,i18n,data}}.a -Wl,--end-group -lrt -pthread
    

    当我将该代码复制到pi并运行它时,我得到了SIGILL(非法指令)。

    注意:不使用v8库的交叉编译软件可以正常工作。此外,主机上的x64 v8库工作正常。

    在较新的内核版本shelld8上也抛出了SIGILL但是我切换到旧版本3.6.11(较新的内核https://groups.google.com/forum/#!topic/v8-users/IPT9EeYK9bg的问题)并且它们开始工作,但已编译示例代码仍然显示相同的问题。

    有没有人有类似的经历?关于如何克服这个问题的任何建议?

1 个答案:

答案 0 :(得分:3)

我发现了一个解决方案,感谢v8 google group上的帖子。 https://groups.google.com/forum/#!topic/v8-users/LTppUbqNrzI

问题在于它应该是make参数。

make arm arm_version=6 armfpu=vfp armfloatabi=hard