1.每日自省; 2.享受人生; 3.尽力而为; 4.坚持不懈; 5.切莫急躁; 6.慎言敏行; 7.动心忍性; 8.上善若水。
全部博文(134)
分类: 嵌入式
2013-07-06 08:57:11
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-