2013-01-21 137 views
0

我想編譯一個「Hello world」linux kernel module編程Fedora 14。 我的內核版本是「2.6.35.14-97.fc14.i686」,我指的是make文件中的/lib/modules/$(shell uname -r)/build M=$(PWD)模塊來編譯我的hello.o程序。Linux內核模塊編程Makefile錯誤

此「生成」文件顯示它爲特殊文件並鏈接到/lib/module/2.6....i686/文件夾中的源文件。

當我編譯我的代碼獲取低於錯誤。

make -C /lib/modules/2.6.35.14-97.fc14.i686/build M=/root/kernel modules 
make: *** /lib/modules/2.6.35.14-97.fc14.i686/build: No such file or directory. Stop. 

Makefile

obj-m +=hello.o 

all: 
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

請給我的解決方案來運行這個模塊程序。

+0

消息是很清楚...有沒有'build'目錄,或父迪爾斯的至少一個(/ lib目錄,/ lib/modules目錄,/ lib中/ modules/2.6 ...)缺失。 –

+0

檢查你的/ lib/modules/*目錄。可能不是'2.6.35.14-97.fc14.i686' ...對於Ubuntu,它是'3.5.0-22-generic',不知道Fedora。 – Veger

+0

你的系統中是否安裝了kernel-devel或類似的軟件包? – Xeor

回答

0

你應該只需要'kernel-devel',你可以使用yum來安裝它。我使用ubuntu,我只需要下載3.5.0-22-generic軟件包就可以工作,但是快速的'Kernal開發模塊在Fedora上搜索谷歌就導致我Here 希望這會有所幫助。

0

嘗試安裝安裝kernel-devel

yum install kernel-devel

0

編譯內核和安裝模塊INSTALL_MOD_PATH = /路徑/ 在編譯像 您的hello world。鏈路模塊路徑MAKE -C KDIR = INSTALL_MOD_PATH M ='$ PWD'模塊

+0

請嘗試更多地解釋您的答案。它是做什麼的?它爲什麼解決問題? –

+0

Xaver Kapeller通過編譯模塊將某些模塊鏈接到鏈接器,假設你的模塊使用了netlink。在編譯之前啓用netlink模塊。 –

0

如其他人所建議,請安裝「kernel-devel」。這對我來說非常合適。

您可以通過安裝它:

yum install kernel-devel