看板 LinuxDev 關於我們 聯絡資訊
大家好 新手自學 最近自己在 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
hurryhigh: 如果只是要編譯module,使用linux-header-4.13.0 即可 05/20 12:07
hurryhigh: linux-source-4.13.0 通常是需要重新編譯kernel image 05/20 12:08
hurryhigh: 時才會去使用到的。 05/20 12:09
hurryhigh: 關於一個有generic一個沒有 因為我手邊沒環境,我印象 05/20 12:13
hurryhigh: 中generic的資料夾應該只是另外一個的link 05/20 12:14
gowrite: 感謝解答 , 謝謝 07/18 12:44