首页 理论教育 运用GNU开发工具-嵌入式系统原理与应用

运用GNU开发工具-嵌入式系统原理与应用

时间:2023-11-23 理论教育 版权反馈
【摘要】:GNU 开发工具都是采用命令行的方式,虽然复杂,但提供了更大的灵活性。gcc 编译器gcc 是GNU 组织的免费C 语言编译器,在Linux 操作系统中,对一个用标准C 语言写的源程序进行编译,要使用GNU 的gcc 编译器。GNU Make1)GNU Make 的作用当源文件发生改变后,需要重新编译,然后重新链接生成。GNU Make 工具能很好地解决这个问题。GNU Make 负责将源代码生成最终可执行文件和其他非源代码文件。Makefile 的基本结构如下:目标文件名: 依赖文件名使用GDB 调试程序GDB 是GNU 自带的调试工具。

运用GNU开发工具-嵌入式系统原理与应用

GNU 软件包括C 编译器gcc,C+ +编译器G+ +,汇编器AS,链接器LD,二进制转换工具(OBJCOPY,OBJDUMP),调试工具(GDB,GDBSERVER,KGDB)和基于不同硬件平台的开发库。

GNU 开发工具都是采用命令行的方式,虽然复杂,但提供了更大的灵活性。

(1)gcc 编译器

gcc 是GNU 组织的免费C 语言编译器,在Linux 操作系统中,对一个用标准C 语言写的源程序进行编译,要使用GNU 的gcc 编译器。

例如,下面一个非常简单的Hello 源程序(hello.c):

要编译此程序,只要在Linux 的bash 提示符下输入命令:

gcc 就会生成一个hello 的可执行文件。 在hello.c 的当前目录下执行该文件,就可以看到程序的输出结果,在屏幕上打印出“Hello the world”的字符串来。

gcc 最基本的用法是:gcc [options] file...,其整个编译过程分四步:预处理、编译、汇编和链接。

GNU 编译器生成的目标文件缺省格式为elf(executive linked file),elf 格式由若干段组成:

.text(正文段):包含程序的指令代码。

.data(数据段):包含固定的数据,如常量、字符串等。

.bss(未初始化数据段):包含未初始化的变量数组等。

(2)GNU Make(www.xing528.com)

1)GNU Make 的作用

当源文件发生改变后,需要重新编译,然后重新链接生成。 当只有一个源文件时,重新编译链接的过程显得并不是太烦琐,但是,如果在一个工程中包含了若干个源码文件,而这些源码文件中的某个或几个又被其他源码文件包含,如果一个文件改动,则包含它的那些源文件都要进行重新编译链接,工作量是可想而知的。 GNU Make 工具能很好地解决这个问题。GNU Make 负责将源代码生成最终可执行文件和其他非源代码文件。

make 命令本身带有四种参数:标志、宏定义、描述文件名和目标文件名。

其标准形式为:

make [flags] [macro definitions] [targets]

2)makefile 文件及其结构

make 通过被称为makefile 的文件来实现对源代码的操作,该文件是用bash 语言编写的。Makefile 的基本结构如下:

目标文件名: 依赖文件名

(3)使用GDB 调试程序

GDB (GNU Degugger)是GNU 自带的调试工具。 它能够进入到程序源码中,允许逐行单步运行,了解程序代码执行顺序等,可提供程序运行时的详细细节。

GDB 常用命令:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈