当前位置: 首页 > news >正文

项目代码的构建

1、构建是什么?

构建指的是将源代码转换为可执行程序、库文件或者其他输出成果的过程。

其他输出成果:打包为安装包、自动生成API应用文档、便于在不同服务器上快速部署的Docker镜像等;

2、构建的核心过程

2.1、编译(Compilation)

将人类可读的源代码(如 C/C++、Python 等)翻译成计算机能识别的机器语言,生成目标文件如.o或.obj。

目标文件主要组成:

  • 代码段(.text),编译后的机器指令;
  • 数据段,.data已初始化数据,.bss未初始化数据;
  • 符号表(.symtab),记录了目标文件中定义和引用的所有符号(如函数名、变量名等)信息,比如符号名称、符号类型、符号地址、符号作用域;
  • 重定位信息(.rel.text、.rel.data 等),由于在编译过程中,编译器并不知道目标文件最终会被加载到内存的哪个地址,因此会将一些符号的地址暂时标记为相对地址。在链接过程中,链接器会根据这些重定位信息,将这些相对地址调整为实际的内存地址。

2.2、链接(Linking)

链接是什么?
链接是将多个目标文件和所需的库文件(如标准库、第三方依赖)组合成一个完整的可执行文件的过程。

为什么需要链接?
在编译过程中,每个源文件都会被独立编译成一个目标文件,这些目标文件可能会引用其他目标文件或库文件中的函数和变量,链接器的任务就是将这些引用解析并连接起来,生成一个可以在目标机器上运行的可执行文件。

可执行文件:可能是Windows环境的.exe文件,Linux环境的.out文件,嵌入式下的.bin文件或.hex文件等。

3、实际项目的构建形式

3.1、通用构建工具

CMake 是一个跨平台的构建工具,跨平台体现在可以根据同一个配置文件 CMakeLists.txt,来生成适应于不同平台的构建文件

构建文件类型举例:

  • Makefile,适用于Unix/Linux平台。
  • Ninja,一个快速、轻量级的构建系统,支持并行构建,特别适用于大型项目和对构建速度要求较高的情况。
  • Visual Studio项目文件,适用于 Windows 系统,可以直接在Microsoft Visual Studio中进行编译和调试。
  • Xcode项目文件,适用于苹果的Xcode开发环境,用于构建和调试Mac和iOS应用程序。

也可以不使用CMake,比如一些简单的项目直接编写Makefile构建文件.

根据生成的(或编写的)构建文件类型,使用对应的构建工具执行编译。
比如,若生成的是Makefile,则运行make命令;若生成的是 Ninja 文件,则运行ninja命令。

3.2、集成开发环境(IDE)内置构建系统

有些集成开发环境(IDE)里会有内置的构建系统,提供了一键式的编译、链接和下载功能,简化了开发流程。

举例:

  • Keil MDK
  • IAR
  • STM32CubeIDE

相关文章:

  • 【QA】单件模式在Qt中有哪些应用?
  • isaacgymEnvs 的yaml文件dt设置
  • 【AI学习笔记】Coze平台实现将Excel文档批量导入数据库全过程
  • 多源数据融合处理方法综述
  • 机器学习——KNN超参数
  • 第十五章:模板参数推导_《C++ Templates》notes
  • L2-【英音】地道语音语调--连读
  • 一条sql语句在mysql中的执行流程(Mysql基础架构)
  • 【Unity3D】摄像机适配场景以及Canvas适配
  • 使用LangChain开发智能问答系统
  • c#难点整理
  • 【模板】计算几何入门
  • Vue 表单输入绑定,双向绑定
  • 基于 intellij-platform-plugin-template 开发IDEA插件注意事项
  • form 表单内容序列化成一个字符串
  • 大模型架构记录2 【综述-相关代码】
  • 数据服务赋能数据治理:从“One Service”到QuickAPI的演进
  • redis操作
  • 【搜索】dfs(回溯、剪枝、记忆化)
  • 【C++】类和对象(二)默认成员函数之构造函数、析构函数
  • 古籍新书·2025年春季|中国土司制度史料集成
  • 促进产销对接,安徽六安特色产品将来沪推介
  • 人民日报头版:上海纵深推进浦东高水平改革开放
  • 银川市市长信箱被指已读乱回,官方回应
  • 体坛联播|巴萨“三杀”皇马夺国王杯,陈妤颉破亚洲少年纪录
  • 常熟银行一季度净赚超10亿增逾13%,净息差较上年末下降0.1个百分点