在linux的驱动Makefile中添加调试选项
2015-08-28 10:22
706 查看
在编译linux驱动的时候添加-g等调试选项将会很方便调试,如反汇编等。
添加方法很简单。只需要给环境变量EXTRA_CFLAGS赋值-g就行了,开始我以为需要明确指定-g,就像编译应用程序那样,gcc main.c -g -o test,原来系统中保留的环境变量EXTRA_CFLAGS,直接给他赋值就行了。
如下面的Makfile:
1 TOP := $(shell pwd)/../../..
2 -include $(TOP)/make/Makefile.param
3
4 MOD_PCM = snd-soc-pcm
5 MOD_I2S = snd-soc-i2s
6 MOD_CARD = snd-soc-card
7
8 MOD_NAME += $(MOD_PCM) $(MOD_I2S) $(MOD_CARD)
9
10 LINUX_SRC = $(KERNEL_DIR)
11 LINUX_SRC_MODULE = $(IMAGE_DIR)/sys/lib/modules/$(LINUX_VERSION)/kernel/sound/soc/
12 LINUX_VERSION = $(shell cat $(KERNEL_DIR)/include/config/kernel.release 2> /dev/null)
13 BASE_DIR = $(SYS_DIR)
14 EXTRA_CFLAGS = -g
15
16 ifneq ($(KERNELRELEASE),)
17 obj-m := $(MOD_PCM).o $(MOD_I2S).o $(MOD_CARD).o
18 $(MOD_PCM)-objs := pcm.o
19 $(MOD_I2S)-objs := i2s.o
20 $(MOD_CARD)-objs := card.o
21
22 else
23 PWD:=$(shell pwd)
24 default:
25 make -C $(KERNEL_DIR) M=$(PWD) modules
26
27 install:
28 install -d $(LINUX_SRC_MODULE)
29 install -m 644 -c $(addsuffix .ko,$(MOD_NAME)) $(LINUX_SRC_MODULE)
30 echo $(LINUX_VERSION)
31 /sbin/depmod -b $(BASE_DIR) -F $(LINUX_SRC)/System.map -v $(LINUX_VERSION) -a
32
33 clean:
34 rm -rf *.symvers *.order *.o *.mod.c *.mod.o *.ko .*.ko.cmd .*.o.cmd .tmp_versions
35 rm -rf $(addprefix $(LINUX_SRC_MODULE),$(addsuffix .ko,$(MOD_NAME)))
36 /sbin/depmod -b $(BASE_DIR) -F $(LINUX_SRC)/System.map -v $(LINUX_VERSION) -a
37 endif
38
39 cp:
40 cp -frv *.ko /home/tftpboot/me
添加方法很简单。只需要给环境变量EXTRA_CFLAGS赋值-g就行了,开始我以为需要明确指定-g,就像编译应用程序那样,gcc main.c -g -o test,原来系统中保留的环境变量EXTRA_CFLAGS,直接给他赋值就行了。
如下面的Makfile:
1 TOP := $(shell pwd)/../../..
2 -include $(TOP)/make/Makefile.param
3
4 MOD_PCM = snd-soc-pcm
5 MOD_I2S = snd-soc-i2s
6 MOD_CARD = snd-soc-card
7
8 MOD_NAME += $(MOD_PCM) $(MOD_I2S) $(MOD_CARD)
9
10 LINUX_SRC = $(KERNEL_DIR)
11 LINUX_SRC_MODULE = $(IMAGE_DIR)/sys/lib/modules/$(LINUX_VERSION)/kernel/sound/soc/
12 LINUX_VERSION = $(shell cat $(KERNEL_DIR)/include/config/kernel.release 2> /dev/null)
13 BASE_DIR = $(SYS_DIR)
14 EXTRA_CFLAGS = -g
15
16 ifneq ($(KERNELRELEASE),)
17 obj-m := $(MOD_PCM).o $(MOD_I2S).o $(MOD_CARD).o
18 $(MOD_PCM)-objs := pcm.o
19 $(MOD_I2S)-objs := i2s.o
20 $(MOD_CARD)-objs := card.o
21
22 else
23 PWD:=$(shell pwd)
24 default:
25 make -C $(KERNEL_DIR) M=$(PWD) modules
26
27 install:
28 install -d $(LINUX_SRC_MODULE)
29 install -m 644 -c $(addsuffix .ko,$(MOD_NAME)) $(LINUX_SRC_MODULE)
30 echo $(LINUX_VERSION)
31 /sbin/depmod -b $(BASE_DIR) -F $(LINUX_SRC)/System.map -v $(LINUX_VERSION) -a
32
33 clean:
34 rm -rf *.symvers *.order *.o *.mod.c *.mod.o *.ko .*.ko.cmd .*.o.cmd .tmp_versions
35 rm -rf $(addprefix $(LINUX_SRC_MODULE),$(addsuffix .ko,$(MOD_NAME)))
36 /sbin/depmod -b $(BASE_DIR) -F $(LINUX_SRC)/System.map -v $(LINUX_VERSION) -a
37 endif
38
39 cp:
40 cp -frv *.ko /home/tftpboot/me
相关文章推荐
- 文件管理系统的学习
- Linux学习笔记-----Linux服务管理----讲12.1 Linux服务管理-----服务分类
- 在Linux操作系统中修改环境变量的方法
- centos+bridge
- Linux环境中MySQL主从同步--添加新的从库
- Linux环境中MySQL主从同步--添加新的从库
- PHP在linux上执行外部命令(整理)
- 虚拟机Linux系统修复_偏方
- Linux awk命令详解
- Centos6.5使用yum安装mysql——快速上手必备
- linux:手动校准系统时间和硬件CMOS时间
- Linux基础知识整理
- Linux常用命令
- Linux日志管理-rsyslogd/日志轮替
- Linux中通过命令行监控股票报价
- linux c 连接mysql数据库
- Linux sysctl.conf 优化方案
- Linux文件解压
- Linux文件解压
- Linux下的进程间通信-详解