Linux /usr/src/kernels 目录为空的解决方法

容器业务使用centos7.3新升级的内核5.4.152编译模块时报错

configure:error:Invaild kernel source directory /lib/modules/5.4.152-el7.elrepo.x86_64/source

cd到/usr/src/kernels目录为空

Linux /usr/src/kernels 目录为空的解决方法

Linux /usr/src/kernels 目录为空的解决方法

 解决方法:

再使用elrepo源升级内核时少安装了kernel-lt-devel-5.4.152-1.el7.elrepo.x86_64.rpm包导致编译时出错,重新下载rpm包即可

yum install kernel-lt-devel-5.4.152-1.el7.elrepo.x86_64.rpm

LINUX中的kernel-devel工具是干什么的?

如果某个程序需要内核提供的一些功能,它就需要内核的 C header 来编译程序,这个时候 linux-devel 里面的东西就用上了。
比如 nvidia 和 ati 的官方显卡驱动,alsa-driver 声卡驱动,他们都需要编译一个放在内核里面运行的模块,编译这个模块就需要内核的 header 文件才能顺利编译。

当然,kernel-devel 不光是 C Header 文件,它还有内核的配置文件,以及其他的开发用的资料

kernel devel和kernel source的区别 ?

区别:kernel-devel包只包含用于内核开发环境所需的内核头文件以及Makefile,而kernel-souce包含所有内核源代码。
如果仅仅是用于你自己编写的模块开发的话,因为只需引用相应的内核头文件,所以只有devel包即可,如果你要修改现有的内核源代码并重新编译,那必须是kernel-souce。

kernel-souce在RH某些版本之后不再附带在发行版中了,必须自己通过kernel-XXX.src.rpm做出来。
kernel-devel是用做内核一般开发的,比如编写内核模块,原则上,可以不需要内核的原代码。
kernel则是专指内核本身的开发,因此需要内核的原代码。

关于kernel source的有kernel和kernel-devel两个rpm,其中kernel rpm包含源文件和头文件(就像2.4下的kernel-source rpm),而kernel-devel则主要是头文件。

上一篇:【优化求解】人工蜂群ABC算法


下一篇:opencv图像处理-图像形态学