人生境界:明智、中庸、诚信、谦逊
分类: 嵌入式
2013-09-27 13:23:14
原文地址:2.6内核下编译模块的经验—Makefile 作者:apple_guet
2.6内核下编译驱动模块时,我采用的是以下的模块Makefile模板:
ifneq ($(KERNELRELEASE),)
obj-m := LedHdw.o
else
KDIR := /opt/study/kernel/linux-2.6.32.2/ //这是我的交叉编译源代码文件的目录
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers modul*
endif
源文件为LedHdw.c和LedHdw.h,其中LedHdw.c的头文件为:
#include
#include
#include
#include
#include
#include
#include
#include "LedHdw.h"
以上Makefile文件不需要定义CC的路径,其原理是进入嵌入式内核源代码的目录之后利用交叉编译内核源代码的编译器配置进行工作,所以嵌入式交叉编译内核的配置必须正确。
当我在源码目录/iharm/ihkernel/目录配置make menuconfig时,配置成内核版本为S3C6410,然后编译LedHdw.c,发现其找不到
可以观察到几个特点:
1.2.6内核版本已经比2.4内核版本的编译自动化提高了很多。
2.内核源码根目录的Makefile文件里也没有关于交叉编译器的路径配置即CROSS_COMPILE没有配置,只是说
CROSS_COMPILE = $(shell if [ -f .cross_compile ]; then \
cat .cross_compile; \
fi)
然后我在根目录下面找到了隐藏文件.cross_compile,内容即为我的交叉编译器前缀:
/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-