驱动代码使用Makefile的宏

简介: 驱动代码使用Makefile的宏

驱动代码

#include <linux/module.h>
#include <linux/init.h>
static int hello_init(void){
#ifndef DEBUG
    printk("no def DEBUG\n");
#else
    printk(" def DEBUG\n");
#endif
    return 0;
}
static void hello_exit(void){
    printk("hello exit!!!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("Paranoid");
MODULE_VERSION("V1.0");
MODULE_LICENSE("GPL");

Makefile

#make 编译项目
#make file 在存放.ko文件目录中创建对应项目的目录
#make install 将*.ko及其应用测试文件移动到根文件中
KBUILD_CFLAGS_MODULE  += -DDEBUG
KERN_DIR = /home/alientek/linux/IMX6ULL/linux/temp/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek
ROOTFS_DIR = /home/alientek/linux/nfs/rootfs/experiment
#项目名字
PROJECT_NAME = export_symbol
#各驱动名字,ko
DRIVER_NAME1 = a
all:
    make -C $(KERN_DIR) M=`pwd` modules
clear:
    rm -rf modules.order $(DRIVER_NAME1).mod.c *.o Module.symvers .*.cmd .tmp_versions 
clean:
    make -C $(KERN_DIR) M=`pwd` modules clean
    rm -rf modules.order
file:
    mkdir $(ROOTFS_DIR)/$(PROJECT_NAME)
install:
    cp *.ko $(ROOTFS_DIR)/$(PROJECT_NAME)
# 参考内核源码drivers/char/ipmi/Makefile
# 要想把a.c, b.c编译成ab.ko, 可以这样指定:
 obj-m += $(DRIVER_NAME1).o

KBUILD_CFLAGS_KERNEL编译进内核使用宏

KBUILD_CFLAGS_MODULE编译成模块使用宏

再Makefile中定义DEBUG宏(注意格式+)

KBUILD_CFLAGS_MODULE  += -DDEBUG

格式

KBUILD_CFLAGS_MODULE  += -D宏

也可以使用

EXTRA_CFLAGS替换 KBUILD_CFLAGS_MODULE

如果要实现下列效果

#define DEBUG 3

使用下列方式即可

KBUILD_CFLAGS_MODULE  += -DDEBUG=3

没添加宏DEBUG

添加宏DEBUG后


目录
相关文章
|
2月前
|
C语言
内核源码中遇到不会解析的宏怎么办?
内核源码中遇到不会解析的宏怎么办?
204 1
|
1月前
|
并行计算 安全 编译器
【C/C++ 编译相关 gcc】一次搞懂GCC编译选项:优化代码、调试程序必备!
【C/C++ 编译相关 gcc】一次搞懂GCC编译选项:优化代码、调试程序必备!
39 0
|
存储 自然语言处理 编译器
C/C++:程序环境和预处理/宏
简单讲解了宏定义、预处理、条件编译等等
C/C++:程序环境和预处理/宏
|
C语言
gcc编译时传递宏定义
gcc编译时传递宏定义
204 0
|
存储 编译器 API
Win32汇编:过程与宏调用
在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种`后进先出(LIFO,Last-In,First-Out)`的数据结构,这是因为最后压入堆栈的值总是最先被取出,而新数值在执行PUSH压栈时总是被加到堆栈的最顶端,数据也总是从堆栈的最顶端被取出,堆栈是个`特殊的存储区`,主要功能是暂时存放数据和地址,通常用来保护断点和现场.
89 0
C++编译提示宏重定义了,怎么办?
C++编译提示宏重定义了,怎么办?
860 0
|
Shell
Makefile所有内嵌函数
一、文本处理函数以下是GNU make内嵌的文本(字符串)处理函数。1       $(subst FROM,TO,TEXT)函数名称:字符串替换函数—subst。函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”。
1069 0