新闻中心

EEPW首页>嵌入式系统>设计应用> ARM入门篇之(二)工具

ARM入门篇之(二)工具

作者: 时间:2016-11-21 来源:网络 收藏
(1) 交叉工具链,可以理解为交叉工具集

交叉,指在宿主机上编写编译好代码,生成目标机能够运行的格式文件,通过数据线连接宿主机与目标机,从宿主机上下载程序到目标机内

本文引用地址://m.amcfsurvey.com/article/201611/319418.htm

工具链,就是交叉编译器(arm-linux-gcc),交叉连接器(arm-linux-ld),交叉转换器(arm-linux-objcopy),交叉ELF文件阅读器(arm-linux-readelf),交叉反汇编器(arm-linux-objdump)等工具的集合

(2)Makefile管理

makefile,描述了整个程序的编译,链接等的规则

包括:什么样的源文件需要编译,链接;使用什么工具编译,链接;编译,链接时依赖哪些文件;最后产生我们先要的最终执行文件

而上面这一个过程只要你编写好makefile这个文件,再用make命令就可一步生成最终想要的可执行文件

makefile由规则和变量构成

规则:描述了如何通过依赖文件,使用什么工具命令,最终生成目标文件

格式如下:

目标:依赖

[Tab]命令

例如:

start.o:start.S

[Tab]arm-linux-gcc -g -o start.o -c start.S

变量:

系统定义的变量:($@)代表目标,($^)代表所有依赖,($<)代表第一个依赖,(%)通配符

例如上面的例子用变量就是:

%.o:%.S

[Tab]arm-linux-gcc -g -o $@ -c $^

默认情况下,make命令会自动找到文件名叫makefile的文件,当你把makefile改名后,可以用命令:

make -f 文件名

(3)链接脚本(.lds)

段:一个可执行程序通常由代码段,数据段。bss段构成,所以在脚本文件中也要体现出来

链接脚本大概如下:

OUTPUT_FORMAT("elf32littlearm",“elf32littlearm”,“elf32littlearm”)

指定输出文件格式为elf,32位,小端,arm指令

OUTPUT_ARCH(arm)

指定输出平台为ARM

ENTRY(_start)

指定入口_start

SECTIONS{

. = 0x50000000 设置程序开始地址(OK6410首地址)

. = ALIGN(4) 代码四字节对齐

.text: 指定代码段

{

start.o(.text) 第一个部分代码为Start.o

*(.text) 其他部分代码放在start.o代码后面

}

.= ALIGN(4)

.data:{ *(.data) } 数据段

. = ALIGN(4)

bss_start = . bss段的开始位置

.bss:{ *(.bss) } bss段

bss_end = . bss段的结束位置

}



关键词:ARM入门工

评论


技术专区

关闭