前言
在开发程序的过程中,我们最关注的的可能就是源代码和生成的二进制可执行文件了。其中,源代码便是由程序员编写的,可以使用C语言、C++、Java、OC等。而二进制可执行文件便是可以在相应的系统上运行的程序,比如:Windows中的**.exe可执行程序**,DSP芯片中的**.out文件**等。
对于接触计算机不久的小伙伴来说,可能会认为可执行二进制文件是直接由源代码生成的,但事实上并非如此,本文便是对二进制文件的生成过程进行简单的介绍。
需要的工具
编辑器
程序员在编写程序的源代码时,需要用到编辑代码的工具,我们将其称为编辑器。而目前,已经衍生出了众多的编辑器,比如:Linux系统中常用的VIM等,Windows系统中常用的**Sublime Text **、VS Code等,甚至可以使用记事本完成代码的编辑工作。
调试器
在开发程序的过程中,非常重要且必不可少的一步便是调试程序了因为我们的产品更多面向的是客户,而客户往往对产品的质量要求是很严格的。所以,我们在发布产品之前,程序一定要对代码进行详细周到的调试后,尽量减少BUG的存在,再进行测试。此时,便需要使用到调试器了。而目前,最广为人知的调试器便是gdb,即使是在Windows系统的IDE软件中,调试器使用的也是gdb。
编译器
编程语言经过多年的发展,对于绝大多数程序眼而言,目前使用最多的应该都是诸如C++、C语言、Java、Pathon等高级程序语言,可能还有相对较少的程序员主要以低级程序语言,比如汇编语言为主。
但是,无论是高级程序语言还是汇编语言,这都是为了方便人类可以快速进行开发、便于理解的一种产物。而计算机(包括芯片等)是不能够直接识别上述的编程语言的,因为计算机唯一能够识别的是由一系列的0和1组成的机器语言(二进制可执行文件)。所以,现实世界中便必然需要一种将高级或者低级程序语言转换为机器语言的一种工具,这个工具便是编译器。
目前,在Linux系统中,使比较广泛的编译器是gcc、g++等,而在Windows系统中,也可以使用包括gcc、MinGW(基于gcc的工具链)、**VS C++**等编译器。
补充:Linux和Windows下不同的工具形式
Linux下独立的工具
在Linux系统中,上述三个工具几乎都是单独存在的。即用户往往需要单独安装编辑器、调试器和编译器。
Windows下的IDE
与之不同的是,Windows系统中,往往将上述三个工具进行集成,作为一个软件进行发布,即我们常说的IDE。
为什么有这样的不同
一般而言,Linux系统的核心是内核,该系统也是基于这个内核进行开发的。但是这个内核的扩展性和移植性很强,我们不仅可以将其用于普通的Linux或者Unix操作系统,还可以将其用于嵌入式Linux领域。而当应用于不同的平台之上时,可能对上述三个工具的需求是不同的,比如:在嵌入式Linux领域,由于嵌入式系统的特性,导致其不能在嵌入式平台上进行编译,往往需要利用交叉