gllvm是wllvm的一个替代品,能够更快,并行地构建字节码。官方仓库有段时间没更新了,导致我在安装过程中出现了一些版本不兼容的问题。下面记录下安装过程,方便后人。
官方仓库:GitHub - SRI-CSL/gllvm: Whole Program LLVM: wllvm ported to go
安装相关依赖
gllvm是基于Go的软件。所以需要安装下go语言。2023年go已经到了1.20版本,也舍弃了go get 的安装方式,所以按照gllvm文档来安装会出现一些问题。
据我的测试,go的1.16.5版本可以正常支持gllvm。下面介绍下这个版本的go的安装方式。
# 下载编译好的Go的二进制
wget https://go.dev/dl/go1.16.5.linux-amd64.tar.gz
# root用户或者sudo权限运行下面的
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz
# 设置好环境变量,也可以把下面的命令加入到 $HOME/.profile or /etc/profile
export PATH=$PATH:/usr/local/go/bin
## 确认下go的版本
go version
除此之外还需要安装llvm,这方面教程很多了,就不再赘述了。
安装gllvm
直接按官方文档运行下面命令即可,会在$GOPATH/bin
目录下发现这五个二进制程序:gclang
, gclang++
, gflang
, get-bc
。默认的$GOPATH/bin
为~/go/bin
go get github.com/SRI-CSL/gllvm/cmd/...
用法
设置CC为gclang,然后make
tar xf pkg-config-0.26.tar.gz
cd pkg-config-0.26
CC=gclang ./configure
make
在使用get-bc来提取字节码
get-bc pkg-config