天嵌 ARM开发社区

 找回密码
 注册
查看: 1839|回复: 4

makefile语法问题

[复制链接]
eddy_liu 发表于 2010-11-19 17:55:49 | 显示全部楼层 |阅读模式
下面是一个简单的打印字符的驱动程序
#include <linux/init.h>
#include <linux/module.h>

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的一些相关语法呢?
天嵌_support1 发表于 2010-11-19 18:48:14 | 显示全部楼层
1# eddy_liu


网友去理解一下一些常用的编译器选项说明。

问题1:
在第7行中参数-D__KERNEL__  -DMODULE和-march=armv4t是什么意思

答:-D 是反汇编段,-m是指定的目标机器类别

问题2:
第8行的参数 -r是什么意思

答:是linux下 rm命令的选项,表示 递归到子目录的意思
问题3:
第11行参数-mapcs是什么意思
-m 是设置了目标类型
问题4:
第12行参数*~ 和core是什么意思
*~ 是代表带有 ~结尾的文件,core 应该是目录
问题5:
如果想查询下arm-linux-gcc的相关参数该如何办呢?#info arm-linux-gcc就算啦,我试过,看起来一点头绪都没有。
答:arm-linux-gcc -v 就可以看了
如果想查询下Makefile的一些相关语法呢?
machoe 发表于 2010-11-19 19:18:04 | 显示全部楼层
向lxt版主学习,顶。
 楼主| eddy_liu 发表于 2010-11-19 23:58:27 | 显示全部楼层
1# eddy_liu


网友去理解一下一些常用的编译器选项说明。

问题1:
在第7行中参数-D__KERNEL__  -DMODULE和-march=armv4t是什么意思

答:-D 是反汇编段,-m是指定的目标机器类别

问题2:
第8行的参 ...
embedsky_lxt 发表于 2010-11-19 18:48


恩,向楼主学习,但还是有些问题哈。下面是在学校论坛的答案,和楼主的回答有些出入

-D__KERNEL__  -DMODULE  相当于C语言中的
#define  __KERNEL__
#define  MODULE

-march=armv4t   表示Machine Architacture 即目标板上cpu的架构
LDFLAGS = -r    中的r表示开启链接器ld的并行链接功能,这可以提高速度
-mapcs         对所有函数都生成一个遵从ARM程序调用标准的堆栈帧,
*~              就不清楚了,想不到还有这种匹配表达式。
想看下arm-linux-gcc的参数可以看这里:http://blog.chinaunix.net/u/8059/showart_1078646.html,还有这:http://gnu.huihoo.org/gcc/gcc-3.4.6/gcc/ARM-Options.html
网上有一篇:《跟我一起写makefile》,推荐你看一下。

但我还是不明白-D__KERNEL__  -DMODULE  到底是什么意思呢?这两个参数是做什么用的呢?不管是版主给的解释还是学校论坛的解释。我都还是没能清楚在makefile中加上这两个参数会对编译起到什么作用
 楼主| eddy_liu 发表于 2010-11-20 00:27:38 | 显示全部楼层
对与2440下面的选项应该选那个呢?
armv2、armv2a、armv3、armv3m、armv4和armv4t
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-6 07:18 , Processed in 1.019570 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表