Centos7编译安装llvm、clang、bcc-tools

研究这个工具的安装花了1天多时间,终于搞定了。在centos7.2和centos7.6上能成功安装。特此记录一下

官方安装文档
https://github.com/iovisor/bcc/blob/master/INSTALL.md#centos---source
---用yum的方式,bcc版本是0.10,使用时会报错。
---用编译的方式,遇到gcc版本过低问题,即使提升了版本也没有改变,查找了很多博客,都没有相关说明,最后看到在命令里指定gcc路径来编译,试了还是报错,但有了改变,再进行编译就好了,详细看下文。

一、关于内核
查看正在使用的内核版本,centos7.2和centos7.6都是3.10,由官方文档所知内核要大于4.1(不升级内核不知道行不行,没实验过)
uname -r

centos7升级内核
导入仓库源
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

查看可安装的软件包
yum --enablerepo="elrepo-kernel" list --showduplicates | sort -r | grep kernel-lt.x86_64

安装LT版本(5.4)
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y

查看现有内核启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

设置启动序号
grub2-set-default 0

#重启
reboot

#检查内核版本,显示5.4.274-1.el7.elrepo.x86_64
uname -r

二、编译安装llvm、clang、bcc-tools
安装依赖
yum install -y epel-release
yum update -y
yum groupinstall -y "Development tools"
yum install -y elfutils-libelf-devel cmake3 git bison flex ncurses-devel
yum install -y luajit luajit-devel # for Lua support

下载llvm和clang,编译,全程需要4-5个小时(2核2G),所在目录/root
curl -LO https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/llvm-10.0.1.src.tar.xz
curl -LO https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/clang-10.0.1.src.tar.xz
tar -xf clang-10.0.1.src.tar.xz
tar -xf llvm-10.0.1.src.tar.xz
mkdir clang-build
mkdir llvm-build
cd llvm-build
cmake3 -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD="BPF;X86" -DCMAKE_BUILD_TYPE=Release ../llvm-10.0.1.src
报错:
-- Could NOT find Z3: Found unsuitable version "0.0.0", but required is at least "4.7.1" (found Z3_LIBRARIES-NOTFOUND)
CMake Error at cmake/modules/CheckCompilerVersion.cmake:38 (message):
Host GCC version must be at least 5.1, your version is 4.8.5.
Call Stack (most recent call first):
cmake/modules/CheckCompilerVersion.cmake:48 (check_compiler_version)
cmake/config-ix.cmake:13 (include)
CMakeLists.txt:623 (include)
原因是gcc

升级gcc,gcc -v显示版本是7
gcc --v
yum -y install centos-release-scl
yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile
scl enable devtoolset-7 bash

cmake3 -D CMAKE_C_COMPILER=/path/to/gcc/bin/gcc -D CMAKE_CXX_COMPILER=/path/to/gcc/bin/g++ -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD="BPF;X86" -DCMAKE_BUILD_TYPE=Release ../llvm-10.0.1.src
结果还是报错,但可以执行下面的命令,从执行日志看,gcc用的已经是版本7

cmake3 -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD="BPF;X86" -DCMAKE_BUILD_TYPE=Release ../llvm-10.0.1.src
make
make install

cd ..
cd clang-build
cmake3 -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD="BPF;X86" -DCMAKE_BUILD_TYPE=Release ../clang-10.0.1.src
make
make install

安装bcc
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake3 ..
make
报错:
make[2]: *** [src/cc/CMakeFiles/bpf-static.dir/build.make:213:src/cc/CMakeFiles/bpf-static.dir/libbpf/src/libbpf.c.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:917:src/cc/CMakeFiles/bpf-static.dir/all] 错误 2
make: *** [Makefile:161:all] 错误 2

root目录下删掉bcc

rm -rf bcc

访问:https://github.com/iovisor/bcc/releases

下载包bcc-src-with-submodule.tar.gz(0.30版本)到/root目录下

tar -zxvf bcc-src-with-submodule.tar.gz
cd bcc
mkdir build
cmake3 ..
make
make install

使用
/usr/share/bcc/tools/cachetop
/usr/share/bcc/tools/cachestat 1 10

或配置路径

export PATH=$PATH:/usr/share/bcc/tools

 

posted @   清风forest  阅读(1270)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示