首页
社区
课程
招聘
[原创]V8环境搭建,100%成功版
发表于: 2019-7-24 21:59 28869

[原创]V8环境搭建,100%成功版

2019-7-24 21:59
28869

原文地址:https://mem2019.github.io/jekyll/update/2019/07/18/V8-Env-Config.html

众所周知,V8是著名浏览器Chrome的JavaScript引擎,而Chrome又由Google开发,又因为某些不能说的原因,我们没有办法直接访问一些Google在因特网上的服务,包括当配置V8环境时所需要下载的部分资源。这导致搭建V8环境的时候,非常的痛苦。目前在网上有一些方法可以成功搭建,但是都有一些局限,而且容易失败,尤其是当我折腾的时候。我有一种超能力,就是在搭建环境的时候可以把所有的坑,不管是有人遇到过的还是没人遇到过的,不管是能解决的还是不能解决的,都特么会撞上。这里介绍的方法,就算是在我身上,都可以成功搭建。所以如果有人用这个方法搭建失败的话,我直播女装。

这一小节我会讲一些废话,关于自己搭建环境的心路历程,如果只是想来看怎么搭建V8环境的话可以直接跳过。

最开始,我是搞了个在香港的阿里云,然后参考这个搭建的。这篇文章简单地来说就是让你在墙外的服务器上搭建编译好,然后用FTP传回来(其实scp也行)。简单暴力,我喜欢。

但是这有两个问题,第一个问题,编译好的V8真的是大,用tar压缩好之后都有1.8个G,然后传回来的速度有时候特慢,正常情况是100 kb/s左右,这传一次就要3个小时,这真是生动的体现了“做题5分钟,搭建3小时”。

第二个问题,远程编译的时候,会出错会出错会出错。远程服务器是Ubuntu的时候,执行tools/dev/v8gen.py脚本的时候,会出现异常;远程服务器是CentOS的时候,编译debug版本的时候,clang++会直接炸。上几张图感受一下。

什么叫做绝望1

什么叫做绝望2

然后还有一个方法,就是搭全局VPN,但是这很容易被某些不能说的东西检测到然后被ban,所以这个方法肯定也不行。

环境Ubuntu 18.04,非此环境本人不负责女装,但是就算不是这个环境应该也不会出错。

首先我们需要一个http代理,这个用SSR就行,具体因为某些不能说的原因不详细阐述。

然后先配置代理,首先我们需要配置git的代理,这样在执行git命令的时候,比方说git clone,就会通过代理来下载。具体命令:

一般来讲SSR是没有用户名和密码的,所以一般这条命令会长这样:

其中ip可以是127.0.0.1也可以是192.168.xxx.xxx,取决于你的http代理在哪,port同理。

然后配置git的代理还不够,因为配置环境的时候也会用到curl这条命令,所以还得在环境变量设置一个代理。具体方法是在~/.bashrc最后面加上这两行命令,其中ip:port换成你的http代理:

然后在命令行里打bash,这样可以重新加载~/.bashrc,载入代理的环境变量。

这个就简单了,跟网上其他人的资料的没啥区别。

然后如果只是想编译d8的话(这样更快),最后一个命令后面加个d8的参数ninja -C out.gn/x64.debug d8

编译release版本的话,最后两行改成这个。

同理最后一个命令改成ninja -C out.gn/x64.release d8只编译d8

然后顺便说一下,在执行gclient sync的时候,可能会提示这个。

NOTICE: You have PROXY values set in your environment, but gsutilin depot_tools does not (yet) obey them.
Also, --no_auth prevents the normal BOTO_CONFIG environmentvariable from being used.
To use a proxy in this situation, please supply those settingsin a .boto file pointed to by the NO_AUTH_BOTO_CONFIG environmentvariable.

这个无所谓,似乎因为在这里要下载的东西不会被墙,如果哪天这个会导致失败的话就按照这个指示设置一下环境变量,如果可以成功本人也不负责女装。

具体说一下吧,首先新建一个.boto的文件,比方说放到/home/[user]/.boto(当然,user改成你的用户名),里面写

其中IP和port改成你的http代理,跟前面的同理。

然后在~/.bashrc最后面加上export NO_AUTH_BOTO_CONFIG="/home/[user]/.boto",然后重启一下bash或者source ~/.bashrc加载环境变量。

首先,Ubuntu下默认的apt里面的nodejs不好使,必须得安装最新版的

python-software-properties 有些情况下他可能会找不到,然后会提示你安装另一个包,如果是这样的话根据提示安装那个包就好了。

然后安装并启动turbolizer

接着用chrome浏览器访问ip:8000就能用了,这个完全加载好要等一小会,因为如果你看HTTP包的话会发现他会从cdn.rawgit.com获取了一个文件,而这个是有点慢的。不过如果开梯子的话就会快多了。

以后如果有空的话我会研究一下弄个docker,这样配置起来就会方便多了。

V8还有一个gdb插件,可以方便GDB调试。具体安装方法很简单了,在文件~/.gdbinit最后面加上这两行。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-7-30 14:43 被holing编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (44)
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
2
学习
2019-7-25 11:56
0
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我懂你,一般这么说的内心就是很想女装,等我去 Ubuntu 18.04 上失败给你看
2019-7-25 12:04
2
雪    币: 1372
活跃值: (5343)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
法布里斯贝拉 大哥写的V8 引擎了解一下? a few c files
https://bellard.org/quickjs/
2019-7-25 12:21
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
5
IamHuskar 法布里斯贝拉 大哥写的V8 引擎了解一下? a few c files https://bellard.org/quickjs/
这个已经被人挖出UAF了
2019-7-25 18:05
0
雪    币: 3567
活跃值: (467)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
6
等一个女装
2019-7-25 18:17
0
雪    币: 465
活跃值: (672)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
能否分享下编译后的32位v8文件(包括lib、dll等文件),谢谢
2019-7-25 22:32
0
雪    币: 6435
活跃值: (441)
能力值: ( LV12,RANK:831 )
在线值:
发帖
回帖
粉丝
8

其实可以 proxychains bash 然后该干啥干啥……
不过每个被墙/国内下载慢的服务都修电脑配一下代理的话, 迟早女装^W 迟早会嫌烦,不如弄个能跑满速的全局VPN省事

最后于 2019-7-29 00:10 被Riatre编辑 ,原因:
2019-7-29 00:09
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
9
Riatre 其实可以 proxychains bash 然后该干啥干啥…… 不过每个被墙/国内下载慢的服务都修电脑配一下代理的话, 迟早女装^W 迟早会嫌烦,不如弄个能跑满速的全局VPN省事
VPN太容易被封了。。
2019-7-29 13:50
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
10
ssarg 能否分享下编译后的32位v8文件(包括lib、dll等文件),谢谢
分享给你也没用,切commit之后还是得重新编,况且这一共好几个G怎么发,不要伸手
2019-7-29 14:39
0
雪    币: 1176
活跃值: (1269)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
11
编译之后压缩完也就100多mb把。。。。 我有好几个版本得。。。
2019-7-29 17:21
0
雪    币: 465
活跃值: (672)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
12
holing 分享给你也没用,切commit之后还是得重新编,况且这一共好几个G怎么发,不要伸手
1、自己编译老是出错,没办法啊。有这么大吗?最好发个新版7.xxx,次之6.xxx也行,用网盘啊,你敢发,我就敢收。
2、很是费解,为啥官方不自己编译个成品给大家用,非要自己编译。
3、你的原话有瑕疵,“ 所以如果有人用这个方法搭建失败的话,我直播女装。 ”,后半句应该是“我直播自己的女装”
最后于 2019-7-29 17:50 被ssarg编辑 ,原因:
2019-7-29 17:36
0
雪    币: 465
活跃值: (672)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
13
Tennn 编译之后压缩完也就100多mb把。。。。 我有好几个版本得。。。
那就分享一下呗,谢谢了。最好新版7.xxx,次之6.xxx也行。
2019-7-29 17:39
0
雪    币: 620
活跃值: (372)
能力值: (RANK:150 )
在线值:
发帖
回帖
粉丝
14
ssarg holing 分享给你也没用,切commit之后还是得重新编,况且这一共好几个G怎么发,不要伸手 1、自己编译老是出错,没办法啊。有这么大吗?最好发个新 ...
[+] 我不知道你是不是说的这个: https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html.
[+[ 我不确定上面的是不是你说的官方发布. 但是用于调试漏洞是可行的. 只是肯定某些方面没有自己的编译的东西工具多.... 所以你要自己迁移一下... 估计会麻烦一些...
[+] 剩下的技巧就是windbg的技巧了....
2019-7-29 18:45
0
雪    币: 620
活跃值: (372)
能力值: (RANK:150 )
在线值:
发帖
回帖
粉丝
15
ssarg holing 分享给你也没用,切commit之后还是得重新编,况且这一共好几个G怎么发,不要伸手 1、自己编译老是出错,没办法啊。有这么大吗?最好发个新 ...
[+] 另外这是docker...的: https://hub.docker.com/r/dockervhf/d8
[+] 我没有尝试过docker... 所以不太i清楚有效性. 但是如果你会的话, 我猜测是有效的.
2019-7-29 18:47
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
16
wjllz [+] 另外这是docker...的: https://hub.docker.com/r/dockervhf/d8 [+] 我没有尝试过docker... 所以不太i清楚有效性. 但是如果你会的话, ...
tql
2019-7-30 11:32
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
17
我少给点内存你就可以下单买女装了
2019-7-30 11:44
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
18
Tennn 编译之后压缩完也就100多mb把。。。。 我有好几个版本得。。。

100M的是release版本
图片描述
图片描述
这还只是out.gn里面的文件夹,你要源码调试的话还得把整个repo打包

2019-7-30 12:20
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
19
malokch 我少给点内存你就可以下单买女装了
那你这个不算
2019-7-30 12:21
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
20
ssarg holing 分享给你也没用,切commit之后还是得重新编,况且这一共好几个G怎么发,不要伸手 1、自己编译老是出错,没办法啊。有这么大吗?最好发个新 ...
因为你每次调洞,需要reset到一个特定commit,他不可能把所有commit给你编译发给你,我最多给你个最新版的编译,但是你需要的是某个commit,或者某个commit的特定patch,所以给你又有啥用?
最后于 2019-7-30 12:24 被holing编辑 ,原因:
2019-7-30 12:23
0
雪    币: 620
活跃值: (372)
能力值: (RANK:150 )
在线值:
发帖
回帖
粉丝
21
师傅. 女装么. 嘤嘤嘤

Hint: You can raise verbosity (-vv) to see the output of failed commands.

Traceback (most recent call last):
  File "tools/dev/v8gen.py", line 304, in <module>
    sys.exit(gen.main())
  File "tools/dev/v8gen.py", line 298, in main
    return self._options.func()
  File "tools/dev/v8gen.py", line 166, in cmd_gen
    gn_outdir,
  File "tools/dev/v8gen.py", line 208, in _call_cmd
    stderr=subprocess.STDOUT,
  File "/usr/lib/python2.7/subprocess.py", line 223, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['/usr/bin/python', '-u', 'tools/mb/mb.py', 'gen', '-f', 'infra/mb/mb_config.pyl', '-m', 'developer_default', '-b', 'x64.debug', 'out.gn/x64.debug']' returned non-zero exit status 1
2019-7-30 12:48
0
雪    币: 620
活跃值: (372)
能力值: (RANK:150 )
在线值:
发帖
回帖
粉丝
22
[+] 给师傅填个小坑.

NOTICE: You have PROXY values set in your environment, but gsutilin depot_tools does not (yet) obey them.
Also, --no_auth prevents the normal BOTO_CONFIG environmentvariable from being used.
To use a proxy in this situation, please supply those settingsin a .boto file pointed to by the NO_AUTH_BOTO_CONFIG environmentvariable.

这一句的话.

使用下面的4条命令:

> vim ~/set_proxy.boto

输入:
[Boto]
export http_proxy="http://192.168.29.1:1080"
export https_proxy=$http_proxy

> 接着设置变量: export NO_AUTH_BOTO_CONFIG=~/set_proxy.boto

> bash
2019-7-30 13:28
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
23
wjllz 师傅. 女装么. 嘤嘤嘤 Hint: You can raise verbosity (-vv) to see the output of failed commands. Traceba ...
这个改boto可以解决,所以不算
2019-7-30 13:57
0
雪    币: 230
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
谢谢楼主的分享,文章思路很清晰
2019-7-30 15:17
0
雪    币: 164
活跃值: (271)
能力值: ( LV12,RANK:583 )
在线值:
发帖
回帖
粉丝
25
你遇到的问题我基本也都遇到了,其中图片中给的问题是没有安装pkg-config导致,所以安装一下就行。还有clang会爆炸是因为swap空间不足,需要将swap改大点。
最后于 2019-7-30 16:36 被skytar编辑 ,原因:
2019-7-30 16:36
0
游客
登录 | 注册 方可回帖
返回
//