从源码到可执行文件

本文介绍了从源代码到可执行文件的全过程,包括预处理、编译、汇编和链接四个阶段。讲解了每个阶段的作用,如预处理替换头文件和宏定义,编译生成汇编代码,汇编阶段生成目标文件,最后链接阶段生成可执行文件。同时,文章提到了Linux和Windows环境下不同的工具,如编辑器VIM、Sublime Text,编译器gcc、g++,以及调试器gdb。还探讨了为何Linux系统中工具通常独立,而Windows系统常采用IDE集成开发环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在开发程序的过程中,我们最关注的的可能就是源代码和生成的二进制可执行文件了。其中,源代码便是由程序员编写的,可以使用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系统中,使比较广泛的编译器是gccg++等,而在Windows系统中,也可以使用包括gccMinGW(基于gcc的工具链)、**VS C++**等编译器。

补充:Linux和Windows下不同的工具形式

Linux下独立的工具

在Linux系统中,上述三个工具几乎都是单独存在的。即用户往往需要单独安装编辑器、调试器和编译器

Windows下的IDE

与之不同的是,Windows系统中,往往将上述三个工具进行集成,作为一个软件进行发布,即我们常说的IDE。

为什么有这样的不同

一般而言,Linux系统的核心是内核,该系统也是基于这个内核进行开发的。但是这个内核的扩展性和移植性很强,我们不仅可以将其用于普通的Linux或者Unix操作系统,还可以将其用于嵌入式Linux领域。而当应用于不同的平台之上时,可能对上述三个工具的需求是不同的,比如:在嵌入式Linux领域,由于嵌入式系统的特性,导致其不能在嵌入式平台上进行编译,往往需要利用交叉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值