首页 理论教育GCC编译器在ARM嵌入式系统中的应用

GCC编译器在ARM嵌入式系统中的应用

【摘要】:a.out来自于Unix C编译程序默认的可执行文件名。ELF格式已经被Linux系统作为标准的格式采用。当使用gcc时,gcc会完成预处理、编译、汇编和连接。GCC支持数种调试和剖析选项。gcc提供了一个很多其他C编译器里没有的特性,在gcc里能使-g和-O连用。

1.使用GNU cc

gcc可以使程序员灵活地控制编译过程。编译过程一般可以分为下面四个阶段,每个阶段分别调用不同的工具进行处理。

2.gcc的版本信息

一般来说,系统安装后就已经安装和设定好了gcc。在shell的提示符下键入gcc v,屏幕上就会显示出目前正在使用的gcc的版本,同时这可以确定系统所支持的是ELF还是a.out可执行文件格式。

Linux系统中可执行文件有两种格式。第一种格式是a.out格式,这种格式用于早期的Linux系统以及Unix系统的原始格式。a.out来自于Unix C编译程序默认的可执行文件名。当使用共享库时,a.out格式就会发生问题。把a.out格式调整为共享库是一种非常复杂的操作,由于这个原因,一种新的文件格式被引入Unix系统5的第四版本和Solaris系统中。它被称为可执行和连接的格式(ELF)。这种格式很容易实现共享库。

ELF格式已经被Linux系统作为标准的格式采用。gcc编译程序产生的所有的二进制文件都是ELF格式的文件(即使可执行文件的默认名仍然是a.out)。较旧的a.out格式的程序仍然可以运行在支持ELF格式的系统上。

gcc的使用格式如下:(www.chuimin.cn)

$gcc[options][filenames]

其中filenames为所要编译的程序源文件。

当使用gcc时,gcc会完成预处理、编译、汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。

GCC支持数种调试和剖析选项。在这些选项里最常用的是-g和-pg选项。

-g选项告诉gcc产生能被GNU调试器使用的调试信息以便调试程序。gcc提供了一个很多其他C编译器里没有的特性,在gcc里能使-g和-O(产生优化代码)连用。这一点非常有用,因为能在与最终产品尽可能相近的情况下调试代码。同时使用这两个选项时必须清楚所写的某些代码已经在优化时被gcc作了改动。

-pg选项告诉gcc在程序里加入额外的代码,执行时,产生gprof用的剖析信息以显示程序的耗时情况。