您好我是新手到Linux和我通過一個例子 http://www.linuxforu.com/2010/12/writing-your-first-linux-driver/ 我使用Ubuntu 12.04和創建了一個叫做ofd.c C代碼文件工作我的方式(見下文),並保存在一個我在〜/ Development/MyProgs/myHelloWorldLinuxModule/v2創建的目錄。我也創建了一個Makefile(參見下面),它位於同一個目錄中。
我希望看到當我輸入做出相同的目錄下生成一個.ko文件,但我得到的是一個消息,說「爲默認將做什麼」Linux的makefile文件例子
我真的不明白makefile文件
我應該定義KERNELRELEASE地方,
什麼是默認的行實際上這樣做,這是否意味着開展做出內核目錄和工作目錄或者我應該把我的代碼的地方尤其如此。
有沒有usr/src/linux but a /usr/src/linux-headers-3.8.0-29
,所以我改變了這一點,是正確的。 (雖然似乎沒有任何區別,但)。
任何幫助將不勝感激。
代碼:
/* ofd.c – Our First Driver code */
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>
static int __init ofd_init(void) /* Constructor */
{
printk(KERN_INFO "Namaskar: ofd registered");
return 0;
}
static void __exit ofd_exit(void) /* Destructor */
{
printk(KERN_INFO "Alvida: ofd unregistered");
}
module_init(ofd_init);
module_exit(ofd_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Anil Kumar Pugalia <email_at_sarika-pugs_dot_com>");
MODULE_DESCRIPTION("Our First Driver");`
Makefile中......
# Makefile – makefile of our first driver
# if KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq (${KERNELRELEASE},)
obj-m := ofd.o
# Otherwise we were called directly from the command line.
# Invoke the kernel build system.
else
KERNEL_SOURCE := /usr/src/linux
PWD := $(shell pwd)
default:
${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules
clean:
${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} clean
endif