您好我是新手到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