初识GCC、MAKE、GDB

    首先我们来初识下GCC,在Linux平台上,最流行的编译系统就GCC(GNU Compile Collection),首先我们要了解什么事GCC。GCC 可以为x86、ARM、MIPS等不同体系结构的硬件平台编译程序;还可以编译C、C++、Pascal、Java等数十种高级语言。所以在嵌入式Linux开发领域,其拥有无可撼动的地位。

    GCC工作流程: C 程序的编译过程中,依次要进行预处理、编译、汇编、链接四个阶段。

    GCC 命令生成的可执行文件的有以下三种格式。(1)a.out(Assembler and Link editor output);(2)COFF(Common object file format);(3)ELF(Executable and linkable format)。其中a.out 和 COFF 格式都是比较老的格式,现在 Linux 平台上可执行文件的主流格式是ELF。

    Glibc(GNU Library C) GNU推出的C语言函数库。Glibc 符合ISO C (International Standard for the C programming language和POSIX(Portable Operating System Interface for Computer Environments)标准。其中ISO C 定义了C函式库的标准格式,POSIX 定义了不同计算平台应该遵守的C函数库标准,ISO C标准的扩充。因此 Glibc可以在各种不同体系结构的计算平台上使用。

    然后我们来初识下make,在实际的开发过程中,仅仅通过使用GCC命令对程序进行编译是非常低效的。为了提高编译程序的效率,很多基于 Windows 平台上的开发工具都提供了工程管理器。 用户只需要点击一个“make”按钮就可以启动工程管理器对整个程序进行自动编译。在整个 编译的过程中是不需要人工干预的。这种工程管理器形象的称为全自动工程管理器。Make 工程管理器的优越性具体体现在以下两个方面。(1)使用方便 通过命令“make”就可以启动Make工程管理器对程序进行编译,所以不再需要每次都输入gcc命令行。Make启动后会根据Makefile文件中的编译规则命令自动对源文件进行编 译和链接,最终生成可执行文件。(2)调试效率高 为了提高编译程序的效率,Make会检查每个源文件的修改时间(时间戳)。只有在上次编译之后被修改的源文件才会在接下来的编译过程中被编译和链接,这样就能避免多余的编译工作量。为了保证源文件具有正确的时间戳,必须保证操作系统时间的正确性(注意VMWare虚拟机的CMOS时间是否正确)。

    Make 工程管理器是完全根据Makefile文件中的编译规则命令进行工作的。Makefile文件由以下三项基本内容组成。(1)需要生成的目标文件(target file)。(2)生成目标文件所需要的依赖文件(dependency file)。(3)生成目标文件的编译规则命令行(command)。

  源文件数量越是多的程序,其编译规则就会越复杂,导致 Makefile文件也越复杂。为了简化 Makefile 的编写,丰富编译程序的方法和手段。Makefile 提供了很多类似高级编程语言的语法机制。比如变量、自动推导、伪目标、文件查找、嵌套执行、条件判断、函数。

  使用Make工程管理器虽然能大幅提高编译和调试程序的效率,但 Makefile 文件的编 写仍然是件非常麻烦的事。那么可不可以自动生成Makefile文件呢? 在Linux平台上广泛使用autotools工具来实现Makefile文件的自动生成。Autotools是由一系列工具组成的,每个工具完成一个阶段的任务,最后生成一个完整的Makefile文件。

  最后我们来初识下GDB,程序的调试工作在整个程序的开发过程中占据了相当大的比例。使用gcc调试C程序时,只能依靠gcc发出的警告或错误信息来进行,所以调试的效率非常低。为此GNU开发了GDB 调试器(GNU Debugger)。GDB 的调试功能非常强大,甚至可以和Visual C++、Visual Basic、Jbuilder等开发工具的调试器相媲美。但GDB的缺点是没有图形调试界面。尽管如此,对于从事嵌入式Linux应用开发的人员还是有必要知道GDB的使用方法的。

    GDB提供了大量的命令来实现各种调试功能。比如说查看源文件、设置断点、查看断点情况、运行程序、查看变量值、继续运行程序、单步运行。

    GDB虽然功能强大,但文本命令的操作方式始终是一个应用上的瓶颈。那么在Linux平台上有没有一款类似于Windows 平台上 Visual Studio、Borland C++这样的可视化集成开发环境呢?当然是有的,目前使用最广泛的就是 Eclipse。2001年IBM公司以源代码的方式发布了Eclipse平台,此后Eclipse 得到了飞速发展。由于是采用Java语言进行编写的,所以Eclipse可以运行在包括Linux 在内的多种操作系统上。

    综上所述,我们对于GCC、MAKE、GDB已经有了基本的认知,希望对于大家的IT生涯有一定的帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值