1.2 在Linux中使用C语言开发
在Linux操作系统中,C语言程序的开发和其他环境类似,程序生成主要分成编译、汇编、连接等几个步骤。在Linux中使用文本编辑工具编辑程序源代码也是程序开发的重要步骤。
1.2.1 开发流程和开发工具
C语言程序的开发过程是:使用编辑工具编写文本形式的C语言源文件,然后编译生成以机器代码为主的二进制可执行程序的过程。由源文件生成可执行程序的开发过程如图1-1所示。
|
| (点击查看大图)图1-1 Linux中C语言程序的开发流程 |
编译是指把用高级语言编写的程序转换成相应处理器的汇编语言程序的过程。从本质上讲,编译是一个文本转换的过程。对嵌入式系统而言,一般要把用C语言编写的程序转换成处理器的汇编代码。编译过程包含了C语言的语法解析和汇编语言的生成两个步骤。汇编一般是逐个文件进行的,对于每一个C语言编写的文件,可能还需要进行预处理。
汇编是从汇编语言程序生成目标系统的二进制代码(机器代码)的过程。机器代码的生成和处理器有密切的联系。相对于编译过程的语法解析,汇编的过程相对简单。这是因为对于一款特定的处理器,其汇编语言和二进制的机器代码是一一对应的。汇编过程的输入是汇编代码,这个汇编代码可能来源于编译过程的输出,也可以是直接用汇编语言书写的程序。
连接过程是指将汇编生成的多段机器代码组合成一个可执行程序。一般来说,通过编译和汇编过程,每一个源文件将生成一个目标文件。连接器的作用就是将这些目标文件组合起来,组合的过程包括了代码段、数据段等部分的合并,以及添加相应的文件头。
在Linux的C语言程序生成过程中,源代码经过编译-汇编-连接生成可执行程序。GCC是Linux下主要的程序生成工具,它除了编译器、汇编器、连接器外,还包括一些辅助工具。
调试是程序开发一个很重要的环节。在Linux的程序开发中,最主要的调试工具是GDB。GDB是一个命令行调试工具,可以实现在程序中设置断点、单步执行、查看对应源代码等功能。
虽然Linux中基本的开发工具GCC和GDB都是命令行工具,但是它们也可以和IDE(集成开发环境)结合使用。
Linux下程序的开发过程及相关工具的使用如图1-2所示。
|
| (点击查看大图)图1-2 Linux程序开发过程及相关工具 |