Linux环境安装google v8

本文详细介绍了在Linux i386环境下从源代码编译谷歌V8 JavaScript引擎的全过程,包括解决编译过程中遇到的问题及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于谷歌V8 JS编译器官方的参考网站:https://developers.google.com/v8/

由于在 Linux i386 环境下安装费了不少功夫,因此决定将整个过程记录下来。

1、获取源代码

  可以通过git方式也可以通过svn方式,由于没有安装git,因此使用svn方式来获取代码(前提是需要先安装svn)

  

  执行如下命令,将最新的源代码checkout到本地的v8目录(该过程较久)

  svn checkout http://v8.googlecode.com/svn/branches/bleeding_edge/ v8 

 

2、编译源代码

  进入v8目录,执行 make dependencies,提示:

  svn checkout --force http://gyp.googlecode.com/svn/trunk build/gyp \

  --revision 1282
  Subcommand 'checkout' doesn't accept option '--force'

  可见当前的linux svn版本不支持 --force 选项,那么修改 Makefile 文件,找到 dependencies ,将其中的 --force 删除,重新执行 make dependencies

  该命令将从网络上下载很多文件(该过程较久)。

 

3、准备工作

  1)安装gyp,下载网址:

  http://pkgs.org/centos-5-rhel-5/epel-i386/gyp-0.1-0.6.1010svn.el5.noarch.rpm.html#download

  下载后执行rpm命令安装:sudo rpm -Uvh gyp-0.1-0.6.1010svn.el5.noarch.rpm

  2)安装Python 2.7 Linux系统默认安装的是2.4,可能后由于该版本问题在make的时候失败

  下载网址:http://www.python.org/

  然后执行 ./configure & make & sudo make install 三部曲

  3)Ok,准备工作完成,开始编译

 

4、准备过程以及完成,开始make

  由于v8支持32、64位的编译,并且使用了不同的目录,因此可以使用

  make native   命令自动根据当前系统配置编译32或者64位类库

  执行后编译很快出现错误了,如下:

  ../src/heap.h: In member function ‘v8::internal::byte** v8::internal::Heap::store_buffer_top_address()’:

  ../src/heap.h:1225: warning: dereferencing type-punned pointer will break strict-aliasing rules

  查询谷歌,发现是由于g++版本较新,strict-aliasing 检查导致所有的指针强制转换 reinterpret_cast 产生的告警变成了编译异常(参考:http://blog.youkuaiyun.com/huipengzhao/article/details/6726416

  继续查询解决方法:将编译时的 Werror  选项注释掉(参考:http://hi.baidu.com/zhangfeezju/blog/item/033098eda975d9f12f2e2190.html)

  make clean    --清空中间文件

  grep -n Werror  `find . -type f`     --查找出所有有 Werror 的地方,把结果中包含 svn以及test的删除则还有四处需要修改  

./build/standalone.gypi:66: 'werror%': '-Werror',
./build/standalone.gypi:191: 'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES', # -Werror
./build/common.gypi:89: 'werror%': '-Werror',
./build/gyp/pylib/gyp/xcode_emulation.py:297: cflags.append('-Werror')
./SConstruct:305: '-Werror',
./SConstruct:408: 'WARNINGFLAGS': ['-Werror', '-Wno-uninitialized'],

把YES修改成NO,把-Werror 修改成空即可,然后继续编译,有告警但是编译通过。 

5、测试,HelloWorld 

参见官网:https://developers.google.com/v8/get_started

其中要注意的是,g++ -Iinclude hello_world.cc -o hello_world out/x64.release/obj.target/tools/gyp/libv8_{base,snapshot}.a -lpthread

由于使用 make native 因此目标类库是在 native 之中,只要将其中的红色部分修改成 native 即可。

编译之后,正确的输出 Hello, World!

 

5、大功告成

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值