今天在编译v5.8 版本内核的BPF示例源码时出现了错误
,搜到了这篇回答:
BPF samples编译及错误解决
这篇文章提到了llvm和clang版本低于等于10.0会造成编译错误。我机子上的llvm和clang版本都是10,最好要升级到12版本。
我尝试了各种方法,如apt clang-12 llvm-12,结果llc --version显示仍然是10.0版本,并不是你刚刚安装过的12版本。
此后我尝试修改/etc/apt/sources.list,添加llvm.org的镜像,
参考了这篇文章 ubuntu安装最新版clang
apt update后发现出现了the following signatures couldn’t be verified because the public key is not availablec错误。之后使用了清华大学镜像站提示的方法,对/etc/apt/sources.list重新进行了修改,apt update后出现
还是不理想。
还有其他博主用编译源码的方式安装了llvm12,但这样很容易出错,很麻烦。
最后我还是尝试在make命令后添加LLC=llc-12 CLANG=clang-12参数,同时按照这篇回答的操作
BPF samples编译及错误解决
,
make menuconfig
make bzImage
make headers_install
make M=samples/bpf/ LLC=llc-12 CLANG=clang-12
最后samples/bpf源码编译通过了