[問題] 關於 kernel source , header , generic

看板LinuxDev作者 (gowrite)時間6年前 (2018/03/12 23:35), 編輯推噓0(006)
留言6則, 2人參與, 5年前最新討論串1/1
大家好 新手自學 最近自己在 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://www.ptt.cc/bbs/LinuxDev/M.1520868938.A.DFF.html

05/20 12:07, 6年前 , 1F
如果只是要編譯module,使用linux-header-4.13.0 即可
05/20 12:07, 1F

05/20 12:08, 6年前 , 2F
linux-source-4.13.0 通常是需要重新編譯kernel image
05/20 12:08, 2F

05/20 12:09, 6年前 , 3F
時才會去使用到的。
05/20 12:09, 3F

05/20 12:13, 6年前 , 4F
關於一個有generic一個沒有 因為我手邊沒環境,我印象
05/20 12:13, 4F

05/20 12:14, 6年前 , 5F
中generic的資料夾應該只是另外一個的link
05/20 12:14, 5F

07/18 12:44, 5年前 , 6F
感謝解答 , 謝謝
07/18 12:44, 6F
文章代碼(AID): #1QffvAt_ (LinuxDev)