#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(“hello, linux\n”);
}
static void hello_exit(void)
{
printk(“goodbye linux \n”);
}
module_init(hello_init);
module_exit(hello_exit);
其Makefile为
1 EXEC = hello
2 OBJS = hello.o
3 SRC = hello.c
4 INCLUDE = /usr/src/linux-2.6.10/include
5 CC = arm-linux-gcc
6 LD = arm-linux-ld
7 MODCFLAGS = -O2 -Wall -D__KERNEL__ -DMODULE -I$(INCLUDE) -march=armv4t -c -o
8 LDFLAGS = -r
9 all: $(EXEC)
10 $(EXEC): $(OBJS)
$(LD) $(LDFLAGS) -o $@ $(OBJS)
11 %.o:%.c
$(CC) $(MODCFLAGS) -mapcs -c $< -o $@
12 clean:
-rm -f $(EXEC) *.o *~ core
问题1:
在第7行中参数-D__KERNEL__ -DMODULE和-march=armv4t是什么意思
问题2:
第8行的参数 -r是什么意思
问题3:
第11行参数-mapcs是什么意思
问题4:
第12行参数*~ 和core是什么意思
问题5:
如果想查询下arm-linux-gcc的相关参数该如何办呢?#info arm-linux-gcc就算啦,我试过,看起来一点头绪都没有。
如果想查询下Makefile的一些相关语法呢?
花开花败2011 于 2011-02-12 17:45:56发表:
软件开发者路线图:从学徒到高手
shenhao0129 于 2010-11-20 11:48:45发表:
armv4t的
oleuner 于 2010-11-20 08:45:59发表:
不懂
eddy_liu 于 2010-11-20 00:17:59发表:
对与2440下面的选项应该选那个呢?
armv2、armv2a、armv3、armv3m、armv4和armv4t
eddy_liu 于 2010-11-20 00:10:23发表:
但我还是不明白-D__KERNEL__ -DMODULE 到底是什么意思呢?这两个参数是做什么用的呢?在makefile中加上这两个参数会对编译起到什么作用呢?
eddy_liu 于 2010-11-20 00:03:16发表:
恩,也许吧。以前参加过电子设计,在校队呆过,专门负责单片机编程。用过MCS-51,CIP-51,MSP-430,觉得对底层还算了解。而且写过的程序也不算少。所以,觉得直接驱动来的要快些。但现在才发现,想象的和实际的差别很大。
shenhao0129 于 2010-11-19 22:27:37发表:
你需要一些更基础的关于Linux下编程的书而不是一上来就是设备驱动程序
alick 于 2010-11-19 18:13:19发表:
你问的这些都和makefile语法没关系,1--4都是给编译器的选项,具体什么意思看编译器手册。
涉及到makefile的:
CFLAGS指编译选项
LDFLAGS指链接时选项
文件编辑中的自动备份文件一般以~为结尾,*~值所有以~结尾的文件,core则是程序崩溃时会产生的
东西(内存映像)。