我在構建helloworld Linux內核模塊時遇到了問題。我使用SUN公司的VirtualBox和我從Ubuntu網站下載的Ubuntu ISO映像。任何幫助將不勝感激。貝婁是C代碼和我收到錯誤消息:Linux內核模塊編譯
的模塊文件被稱爲hellowrld.c,它包含下面的代碼:
#include <linux/module.h> // included for all kernel modules
#include <linux/kernel.h> // included for KERN_INFO
#include <linux/init.h> // included for __init and __exit macros
MODULE_LICENSE("GPL");
static int __init helloworld_init(void)
{
printk(KERN_INFO "Hello world!\n");
return 0;
}
static void __exit helloworld_exit(void)
{
printk(KERN_INFO "Cleaning up module.\n");
}
module_init(helloworld_init);
module_exit(helloworld_exit);
make文件被稱爲makefile.c它包含下面的代碼:
obj -m += helloworld.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
當我運行make命令,我得到的錯誤信息是如下:
cc makefile.c -o makefile
makefile.c:1:4: error: expected '=', ',', ';', 'asm' or '__attribute__' before '-' token
obj-m helloworld.o
make: *** No targets specified no makefile found. Stop
我認爲這個問題是在make文件。 – PeCosta
2秒後有答案。 – PeCosta
makefile應該*不*有'.c'擴展名。在Linux上,根本沒有擴展是很方便的。稱它爲'Makefile'或'makefile'。 – wallyk