大家好
新手自學
最近自己在 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,
但是實際上還是不懂什麼是什麼,
有前輩可以解惑嗎?
謝謝