ARM入门篇之(二)工具
?交叉,指在宿主机上编写编译好代码,生成目标机能够运行的格式文件,通过数据线连接宿主机与目标机,从宿主机上下载程序到目标机内
工具链,就是交叉?编译器(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入门工 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)