您好我是新手到Linux和我通过一个例子来工作我的方式http://www.linuxforu.com/2010/12/writing-your-first-linux-driver/我使用Ubuntu 12.04和所创建的C代码所谓ofd.c(见下文)和文件被保存在我的〜/开发/ MyProgs / myHelloWorldLinuxModule / V2创建的目录。 我还创建了一个Makefile文件(见下文),这是在同一个目录。
我希望看到当我输入做出相同的目录下生成一个.ko文件,但我得到的是一个消息,说“为默认将做什么”
我真的不明白的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