大家好
新手自学
最近自己在 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,
但是实际上还是不懂什么是什么,
有前辈可以解惑吗?
谢谢