注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
微末凡尘的个人空间 https://home.eeworld.com.cn/space-uid-517180.html [收藏] [复制] [分享] [RSS]
日志

ARM-LINUX学习笔记(二)

已有 702 次阅读2015-5-19 22:41 |个人分类:嵌入式ARM

Makefile

在嵌入式Linux学习过程中,我们常常要使用make这个命令,一般就会发生如下神奇的事情:自动生成了一个可以运行的二进制文件。这是为什么呢?
其实就是执行了Makefile文件中的命令。
我们来看一个常见的Makefile
all: led.o
arm-linux-ld -Tled.lds -o led.elf led.o
arm-linux-objcopy -O binary led.elf led.bin
led.o:led.S
arm-linux-gcc -g -o led.o -c led.S

.PHONY:clean
clean:
rm *.o led.elf led.bin

Makefile格式
目标:依赖
[TAB]命令     (命令前面一定是TAB键)

有这么几个知识点:
1、想要得到led.o 输入make led.o,只会产生想要得到的目标
2、当只输入一个make,默认会执行第一条规则。
3、没有依赖的目标是伪目标,要用.PHONY申明
4、如果Makefile文件不是Makefile或者makefile,可以使用make -f 名字来调用Makefile
上面是一个非常简单的Makefile,但是一般我们看到的Makefile一般都不是上面这个样子的。这就涉及到Makefile中的变量。
obj=fun1.o func2.o   ( = 前后不要空格)
$(obj) 就是func1.o func2.o了

除此之外,还有一些系统变量,这些变量看起来很奇葩:
$^ 代表所有的依赖文件
$@ 代表目标
$< 代表第一个依赖文件

有了前面这些理论知识,我们再来看一个终极版的Makefile




Makefile还有很多用法,但是作为嵌入式入门,了解上面这些内容就差不多了。以后慢慢再了解。

链接器脚本
链接器脚本文件主要有3个功能:
1、一个可执行程序通常包含:代码段、数据段、bss段。链接器脚本文件可以用来控制这些段的。
2、控制程序起始位置
3、字节对齐,由于CPU32位的,控制代码4字节对齐,可以提高访问效率
如下是一个范例:
SECTIONS{
        . = 0x50008000;   这一句用来控制起始地址
. = ALIGN(4);     四字节对齐
        .text:            段控制
        {
        *{.test}
        }
. = ALIGN(4);      四字节对齐
        .data:                                        段控制
        {
        *{.data}
        }
       .= ALIGN(4);    四字节对齐
.bss:          段控制
        {
        *{.bss}
        }
}
2015-5-19
有问题可以和我联系: Mars_wangwei@163.com邮箱交流。


本文来自论坛,点击查看完整帖子内容。

全部作者的其他最新日志
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章