Kernel build issue

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

Kernel build issue

文章george » 週三 1月 26, 2005 6:36 pm

請問一下各位,為什麼我的Kernel module都一直build不起來.
是我的方法有錯誤嗎?

kernel version 2.6.10
gcc version 3.3.3-7

sample hello.c
====================================================
/* hello.c */
#include <linux/module.h>
#include <linux/kernel.h>


int init_module(void)
{
printk("<1>Hello world 1.\n");
return 0;
}


void cleanup_module(void)
{
printk(KERN_ALERT "Goodbye world 1.\n");
}
======================================================
gcc command

gcc -O2 -D__KERNEL__ -DMODULE -W -Wall -Wstrict-prototypes -Wmissing-prototypes -isystem /lib/modules/2.6.10/build/include -c hello.c -o hello.o
=======================================================
是可以Build出 .obj檔案來,可是insmod就會有-1 Invalid module format的問題.

可以請各位學長幫我看看嗎??
謝謝 :-D
大便初學者,進階問題請不要問我ㄚ.....
george
可愛的小學生
可愛的小學生
 
文章: 7
註冊時間: 週五 7月 09, 2004 2:25 pm
來自: 糞坑

re:Kernel build issue

文章wsun013 » 週四 1月 27, 2005 3:14 am

我猜:

build module 跟 build kernel 用的 compiler tools 要同一版喔
especially gcc

我之前用gcc 3.3 編 module 在 gcc 2.95 編出的kernel 上
都有那問題, 後來改幾用2.95 就好了

基本上, kernel related 的我都用2.95 編
application relaed 的 -> 3.x for more capabilities with the other libs

希望對你有幫助
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

Re: Kernel build issue

文章cyt » 週四 1月 27, 2005 9:01 am

george 寫:請問一下各位,為什麼我的Kernel module都一直build不起來.
是我的方法有錯誤嗎?

kernel version 2.6.10


HI, 2.4 與 2.6 編譯 kernel module 的方法不一樣喔!
可參考: http://www.tldp.org/LDP/lkmpg/2.6/html/x204.html
cyt
懵懂的國中生
懵懂的國中生
 
文章: 137
註冊時間: 週一 5月 31, 2004 2:20 pm

Re: re:Kernel build issue

文章george » 週四 1月 27, 2005 10:26 am

wsun013 寫:我猜:

build module 跟 build kernel 用的 compiler tools 要同一版喔
especially gcc

我之前用gcc 3.3 編 module 在 gcc 2.95 編出的kernel 上
都有那問題, 後來改幾用2.95 就好了

基本上, kernel related 的我都用2.95 編
application relaed 的 -> 3.x for more capabilities with the other libs

希望對你有幫助


基本上我Build Kernel 跟 Build Module 的compiler都是同一版的
因為都在同一台機器上阿.
不過還是謝謝學長幫我解答 :-D :-D
大便初學者,進階問題請不要問我ㄚ.....
george
可愛的小學生
可愛的小學生
 
文章: 7
註冊時間: 週五 7月 09, 2004 2:25 pm
來自: 糞坑

re:Kernel build issue

文章octapult » 週四 1月 27, 2005 12:05 pm

這一篇文章可以解答您的問題:
http://linuxdevices.com/articles/AT4389927951.html

2.6 編譯 kernel module 的方法跟 2.4 不太一樣。2.4 可以直接下 gcc 和一些參數就可以直接編譯 kernel,可是 2.6 必須先將 module 原始碼放在一個目錄裡面,然後自己寫一個 Makefile,使用 kernel 的一些工具來編譯 module。

例如您的程式 hello.c 可以先放在 hello 這個目錄裡面,然後寫一個 Makefile 內容如下:
代碼: 選擇全部
obj-m := hello.o


然後下達下面這個指令就可以編譯 module 了:
代碼: 選擇全部
make -C /lib/modules/2.6.10/build SUBDIRS=$PWD modules
或是
make -C /usr/src/kernel-source-2.6.10 SUBDIRS=$PWD modules


編譯完成後,insmod hello.ko 就載入剛剛編好的 module 了。

註:當然您也可以將 Makefile 寫完整一點,這樣子的話下達 make 指令就可以直接編譯了。

修改:真是抱歉,剛剛沒有注意看完所有回文小弟就直接回覆文章了。
其實 cyt 兄早已經提供答案了 :ooops:
octapult
摩托學園!學園長們
摩托學園!學園長們
 
文章: 512
註冊時間: 週六 9月 07, 2002 10:30 pm
來自: Seyda Neen, Morrowind

re:Kernel build issue

文章george » 週四 1月 27, 2005 1:43 pm

謝謝各位學長的解答~~

我現在就去研究看看~~

:finger1: :finger1: :finger1:
大便初學者,進階問題請不要問我ㄚ.....
george
可愛的小學生
可愛的小學生
 
文章: 7
註冊時間: 週五 7月 09, 2004 2:25 pm
來自: 糞坑


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客