汇编器 Assembler
用途:编译工具
(1)版本:GNU编译器(GCC)提供对ARM架构的ARM Linux增强支持,支持ARM
Cortex-A8处理器。本书所用GCC版本为arm-linux-gcc-4.5.1。
(2)编译工具:GNU为ARM Linux平台提供了丰富的编译工具,主要包括:
arm-linux-gcc(编译器)
arm-linux-ld(连接器)
arm-linux- objcopy(二进制转换工具)
arm-linux-objdump (反汇编工具)
lds文件(linker概念)
1 用途:GNU编译器可以通过连接脚本文件(lds文件)了解用户程序所定义的段结构和它们的链接地址。
2 段定义:ARM汇编语言以段为单位来组织汇编语言程序。
3 段的类型:代码段(.text)、初始化数据段(.data)、未初始化数据段(.bss),程序中使用上述保留字对段的类型进行声明。
4 段定义语法格式:
.section <section_name> {,‘<flags>’} @定义一个新的代码或数据段。
5 定义程序入口点
汇编程序缺省入口地址由start标号指定,用户也可以在连接脚本文件中用ENTRY标号指明其它入口。
6 文件示例
示例:\6 应用例程\1 No OS(裸机程序)\src\12 .uart_putchar\BL2\uart.lds
SECTIONS /*声明段 */
{ . = 0x23E00000; /*定义段首链接地址 */
.text : { /*首先定义代码段接位置 */
start.o /*代码段首先链接start.o文件*/
* (.text)} /* start.S文件中必须定义有start标号*/
.bss : { /*定义bss段接位置,跟在text段之后*/
* (.bss)}
.data : { /*定义data段接位置,跟在bss段之后*/
* (.data)}
}
makefile文件
1 编译命令:make。 make命令实际是在运行和解析一个文件,这个文件就是makefile。
2 makefile文件:GNU规定了makefile文件书写过程的语法规则。依照这个规则,可以指定文件编译过程依赖的规则,我们需要自行编写makefile文件。
编译器在利用makefile进行编译工程中,并非完全按照makefile文件中的行号顺序来执行,具体执行顺序后续章节将有详细介绍。