编译bpftrace
-
首先下载bpftrace代码,具体的地址在这里
-
由于要编译的版本是arm64,官方给的镜像是amd64的,需要手动修改下文件docker/Docker.ubuntu-glic
#FROM quay.io/iovisor/bpftrace-llvm:${BASE}_${LLVM_VERSION}
FROM syj2468/bpftrace_llvm12
这里使用的镜像是我自己制作的llvm12 arm64镜像
3. 因为是静态编译,所以bpftrace/build.sh内容需要修改一下
#./build-release.sh "$@"
./build-static.sh "$@"
- 傻瓜式执行./build.sh 即可,等待编译成功
- 最后编译成功后,会生成build-release-ubuntu-glibc目录,在里面的src目录下就是编译好的bpftrace, 可以看到只链接了比较少的动态库
注意:
-
修改镜像源
我自己的llvm镜像已经修改了apt源,所以apt-get update操作会比较快,但是如果使用的官方的镜像,如果觉得慢需要在相应的Dockerfile文件里替换源
-
手动编译llvm镜像
官方也提供了相应的Dockerfile文件,在bpftrace/docker/Docker.llvm.可以使用这个制作,需要手动更改一些配置
- 除了上述的源问题,还需要修改cmake/embed/embed_llvm.cmake和cmake/embed/embed_clang.cmake文件,里面会从github获取llvm源码,使用github大概率会导致下载失败,需要替换加速的URL
cmake/embed/embed_llvm.cmake: set(LLVM_DOWNLOAD_URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_FULL_VERSION}/llvm-${LLVM_FULL_VERSION}.src.tar.xz")
cmake/embed/embed_clang.cmake: set(CLANG_DOWNLOAD_URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-${LLVM_VERSION}.src.tar.xz"
- 在Docker.llvm修改cmake获取路径,arm64版本需要修改路径
https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-aarch64.tar.gz
- 在Docker.llvm修改文件路径
/usr/lib/gcc/aarch64-linux-gnu/8/plugin/include/plugin-api.h /usr/local/include