v8编译踩坑记
前言
打算看姚老板的博客学下oob,试图编译v8,结果踩了一堆坑,linux遇到问题之后求助P1umer,改成了win,win那边也是问题连连,决定还是改回linux,下面就记录一下v8编译的一些问题及解决方法
设置代理
我宿主机用的是SSR,代理端口为1080,虚拟机设置NAT,SSR允许局域网代理,在宿主机查看一下本机ip192.168.*.*
,两边互ping一下即可。
git的代理可以直接设置socks5代理,命令如下git config --global http.proxy "socks5://192.168.*.*:1080"
,不过socks5代理后面会出问题,这里可以先用socks5
终端代理可以设置export临时用,也可以在~/.bashrc中添加export再source长久使用,命令位export http_proxy="socks5://192.168.*.*:1080"
以及export https_proxy=$http_proxy
或者export ALL_PROXY="socks5://192.168.*.*:1080"
一条同时设置http和https。
安装depot_tools
从github中下载repo即可,之后添加环境变量到终端配置文件中
1 | git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git |
安装ninja
从github下repo,同样要添加环境变量
1 | git clone https://github.com/ninja-build/ninja.git |
编译v8
gclient
初始化工具集失败,提示有Bootstrapping cipd client
,报错原因curl: (35) gnutls_handshake() failed: The TLS connection was non-properly terminated
,具体原因是curl不能通过代理成功连接到主机,根本原因是proxychains使用socks5协议,但是cipd不支持,下面有两个解决方案,一是手动安装cipd,另一个是将socks5协议转http协议,我参考的是这篇文章
socks5转http
下载polipo
1 | git clone https://github.com/jech/polipo.git |
安装1
2
3cd polipo
sudo make all
sudo make install
新建文件1
sudo vim /etc/polipo.conf
添加以下内容(我这里将宿主机的socks5转到了虚拟机的localhost:8090)
1 | daemonise = false |
换个终端执行polipo
1 | /usr/local/bin/polipo -c /etc/polipo.conf |
设置depot_tools代理
不设置的话download_from_google_storage会提示NO_AUTH_BOTO_CONFIG
新建文件
1 | vim /etc/gclient_boto.cfg |
添加如下内容
1 | [Boto] |
终端设置变量
1 | export NO_AUTH_BOTO_CONFIG=/etc/gclient_boto.cfg |
设置git
1 | git config --global core.packedgitlimit 10g |
下载源码 && 编译
1 | mkdir v8 |
编译的二进制文件为d8,位于./out.gn/x64.debug/d8