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(数据段):包含固定的数据,如常量、字符串等。
(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 常用命令:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。