作者gowrite (gowrite)
看板LinuxDev
标题[问题] 关於 kernel source , header , generic
时间Mon Mar 12 23:35:35 2018
大家好
新手自学
最近自己在 vm 上装了 lubuntu,想要开始学习 linux 相关的东西
安装完了之後
uname -a kernel 版本是 4.13.0-21-generic
看 /usr/src
里面有
linux-headers-4.13.0-21
linux-headers-4.13.0-21-generic
然後写了一个简单的 hello.c module 想要编译好之後 insmod hello.ko
makefile 里面是写 obj-m := hello.o
在 bash command 这边写
make -C /usr/src/linux-headers-4.13.0-21 M=`pwd` modules
但是这样会错误,无法完成编译
但是如果改成
make -C /usr/src/linux-headers-4.13.0-21-generic M=`pwd` modules
这样就可以成功编译,也可以成功 insmod 跟 rmmod hello.ko
这边有几个问题想问
1.请问上面为什麽一个可以编译 module (linux-headers-4.13.0-21-generic),
一个不行编译 module (linux-headers-4.13.0-21)
跟我目前运作的 distro 是 generic 版本的原因有关系吗??
实际有关系的是甚麽??
2.请问一下,如果我用 apt-get install linux-source 安装了这个东西
这个 linux-source 是安装到哪边??
因为我也有看到 /usr/src/ 目录底下也有 linux-source-4.13.0 的东西
想请问
linux-headers-4.13.0-21
linux-headers-4.13.0-21-generic
linux-source-4.13.0
这三个各自是甚麽呢??
应该怎麽去用这些东西??
小弟看了网路上很多教学,载了很多东西,编了几次 kernel,
但是实际上还是不懂什麽是什麽,
有前辈可以解惑吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.54.122
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1520868938.A.DFF.html
1F:→ hurryhigh: 如果只是要编译module,使用linux-header-4.13.0 即可 05/20 12:07
2F:→ hurryhigh: linux-source-4.13.0 通常是需要重新编译kernel image 05/20 12:08
3F:→ hurryhigh: 时才会去使用到的。 05/20 12:09
4F:→ hurryhigh: 关於一个有generic一个没有 因为我手边没环境,我印象 05/20 12:13
5F:→ hurryhigh: 中generic的资料夹应该只是另外一个的link 05/20 12:14
6F:→ gowrite: 感谢解答 , 谢谢 07/18 12:44