问题
DESCEND bpf/resolve_btfids
Auto-detecting system features:
... libelf: [ OFF ]
... zlib: [ OFF ]
... bpf: [ OFF ]
No libelf found
make[4]: *** [elfdep] Error 1
近期遇到一个以前怎么也没遇到的编译问题,centos7系统上编译linux-5.9.10的内核,提示没有安装libelf,zlib等。
解决
一开始总以为是缺少依赖包,于是安装libelf-dev,libelf-devel,elfutils-libelf,elfutils-libelf-devel,devtoolset-7-elfutils-libelf,zlib等等,我都安装了个变,甚至把centos的repo也都找了几个添加了,还是不能解决问题,后来在这篇邮件里找到了解决方法
- 还是得先安装libelf相关包
- 进入源码路径下的tool目录:
cd tools/ && make clean
然后就可以了。
大概问题原因是:Kbuild系统和tools/子系统的编译冲突问题,第一次编译时,遇到libelf缺失,libbpf build system总是直接调用(invoked explicitly)而不是依赖于目标编译,导致了Kbuild与tools/系统之间的编译冲突问题,需要手动make clean。
原文链接