第八章——从源文件到可执行文件
本章讲解的是源文件如何通过编译转换为可执行文件的。
首先计算机只能运行本地代码。用某种编程语言编写的程序就称为源代码,保存源代码的文件被称为源文件。源代码是无法直接运行的,因为CPU能直接解析和运行的不是源代码而是本地代码。本地代码的内容就是各种数值的罗列。编译器负责编译源代码,编译器首先读入代码的内容,然后再把源代码转换为本地代码。因为编译器也是程序的一种所以也需要运行环境。此外还有一种交叉编译器,它生成的是和运行环境中的CPU不同的CPU所使用的本地代码。但是仅靠编译器是无法得到可执行文件的,编译器转换源代码之后,会生成本地文件,但本地文件是无法直接运行的,还需要进行链接处理,因为编译后生成的不是EXE文件,而是扩展名为.obj的目标文件,把多个目标文件结合,生成一个EXE文件的处理就是链接,运行连接程序的就被称为链接器。接下来讲到了启动和库文件,库文件指的是把多个目标文件集合到一个文件的形式。链接时会出现无法解析的外部符号,这表示的是无法找到记述着目的函数和变量的目标文件。还讲到了标准函数。Windows中API的目标文件存储在DDL文件的特殊库文件中,并且提到了导入库和静态链接库两个相反的概念。EXE文件的内容分为再配置信息,变量组,函数组。当程序加载时还会生成两个组,就是栈和堆。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现