linux 驱动 编译 Makefile
2011-05-27 17:26
363 查看
# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
a:
echo defined
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
echo no defined
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
这是用来编译linux驱动的常用的Makefile格式,下面主要是解释一下该Makefile的各个语句的作用。
首先 : ifneq ($(KERNELRELEASE),)
这个语句的作用是判断 $(KERNELRELEASE) 是否已经定义,若$(KERNELRELEASE) 不等于 空串的话,则说明
$(KERNELRELEASE)已经定义了,若等于空串,则说名尚未定义。
若:$(KERNELRELEASE)等于空串,则执行如下命令
KERNELDIR ?= /lib/modules/$(shell uname -r)/build :定义好linux内核源码的位置
PWD := $(shell pwd) :$(shell )可以执行shell命令,并把输出传给 pwd变量
default:
echo no defined
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules :编译
若:$(KERNELRELEASE)不等于空串,则执行
obj-m := hello.o
a:
echo defined
在源码的位置执行make指令,将会有如下的输出。
echo no defined
no defined
make -C /lib/modules/2.6.35-22-generic/build M=/root/driver/driver_demo2 modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
CC [M] /root/driver/driver_demo2/hello.o
Building modules, stage 2.
MODPOST 1 modules
CC /root/driver/driver_demo2/hello.mod.o
LD [M] /root/driver/driver_demo2/hello.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
从这里的输出可以看出make指令执行的过程。
从
echo no defined
no defined
可以看出共进入该makefile两次。
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
a:
echo defined
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
echo no defined
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
这是用来编译linux驱动的常用的Makefile格式,下面主要是解释一下该Makefile的各个语句的作用。
首先 : ifneq ($(KERNELRELEASE),)
这个语句的作用是判断 $(KERNELRELEASE) 是否已经定义,若$(KERNELRELEASE) 不等于 空串的话,则说明
$(KERNELRELEASE)已经定义了,若等于空串,则说名尚未定义。
若:$(KERNELRELEASE)等于空串,则执行如下命令
KERNELDIR ?= /lib/modules/$(shell uname -r)/build :定义好linux内核源码的位置
PWD := $(shell pwd) :$(shell )可以执行shell命令,并把输出传给 pwd变量
default:
echo no defined
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules :编译
若:$(KERNELRELEASE)不等于空串,则执行
obj-m := hello.o
a:
echo defined
在源码的位置执行make指令,将会有如下的输出。
echo no defined
no defined
make -C /lib/modules/2.6.35-22-generic/build M=/root/driver/driver_demo2 modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
CC [M] /root/driver/driver_demo2/hello.o
Building modules, stage 2.
MODPOST 1 modules
CC /root/driver/driver_demo2/hello.mod.o
LD [M] /root/driver/driver_demo2/hello.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
从这里的输出可以看出make指令执行的过程。
从
echo no defined
no defined
可以看出共进入该makefile两次。
相关文章推荐
- linux驱动-在PC机下编译驱动程序的Makefile
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- 编译Linux2.6.x内核驱动的makefile文件
- 编译Linux2.6.x内核驱动的makefile文件
- 【ZYNQ_LINUX】如何把自己的驱动编译进内核或模块(Kconfig和Makefile
- linux驱动开发内核模块编译——Makefile入门
- Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
- 多个*.c文件编译生成一个模块驱动*.ko的makefile文件编写
- 关于linux内核驱动开发中Makefile编译的问题
- 将驱动编译成.ko文件添加到嵌入式Linux系统下
- 一个通用的LINUX驱动Makefile
- linux驱动编译系统
- linux驱动学习--第六天:第四章 Linux 内核模块 之 Linux 内核模块编译
- Linux 驱动编译报错:error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
- linux多文件编译—makefile
- linux 驱动 指定下载的内核源码树编译
- linux设备驱动makefile入门解析
- linux启动时对编译进内核驱动模块的加载
- linux驱动编译不通过的问题解决
- linux下的hello_world驱动的Makefile