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

GCC RISCV 后端 -- GCC 构建系统简介

        前文提过,GNU 的项目一般都是使用 GNU Autotools 来实现它们的构建系统,其主要目的是通过 GNU Autotools 对不同平台(Target Triple: <CPU ARCH>-<Vendor>-<OS>-<ABI>)进行抽象,使得GNU Autotools实现的构建系统可以适配不同的平台,减少由于平台差异导致维护工作量。

        由此,GCC (GNU Compiler Collection) 项目也不例外。其实,GCC 原名为 GNU C Compiler,因此,该项目从设计之初主要支持C语言及其派生语言(C++\ObjC等)。这样使得其GCC的设计是针对C语言的,即 前端中间语言 GENERIC - Tree。把握这个核心,就容易分解GCC代码的设计了。

        回到,GCC构建系统,分两部分,一是配置( configure),二是构建(make)。其配置脚本的源代码是在gcc目录下的 configure.ac。使用 autoconf 或 autoreconf 命令,将 configure.ac 转换成 configure (shell 脚本)。其主要作用是1. 检测系统是否满足构建的需要;2. 配置构建参数。

        其中,会调用 config.build, config.host, 和 config.gcc 脚本 分别对 构建机器(build machine),运行机器(host machine)以及 目标机器(Target machine)进行配置。

        其中,目标变量( $target ) 由 AC_CANONICAL_TARGET 定义,其值为 <target_cpu>-<target_vendor>-<target_os>。

        在通过 configure 脚本配置完毕后,对应的 makefile.in 会被转换成 makefile,同时 makefile 会包含在 configure 脚本配置的 makefile 片段 (fragment),如下:

        此时就可以了解大概的构建系统结构了。感兴趣的读者可以顺着上述的轮廓,查看对应的源代码,即 configure.ac 和 makefile.in 。

相关文章:

  • 《2025软件测试工程师面试》功能测试篇
  • 6.人工智能与机器学习
  • 通过多线程分别获取高分辨率和低分辨率的H264码流
  • C与C++的区别
  • 大型语言模型中微调和提炼的详细技术比较
  • 【C++】可变模板参数和完美转发
  • 蓝桥杯 之 图形规律
  • rollup是什么?以及它和webpack 和vite的区别
  • 【Web安全方向编程语言学习顺序推荐】
  • 基于 Vue 和 SSM 的前后端分离项目实战:登录与注册功能实现
  • 安卓基础组件Looper - 01 通讯机制简介
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.1.3时间序列数据优化(Rollover + ILM策略)
  • Leetcode 30. 串联所有单词的子串
  • 小鹏汽车申请注册“P7 Ultra”商标 或为P7车型升级版铺路
  • [java基础知识] java的集合体系Collection(List,Set,Queue),Map
  • 基于python跨平台硬件诊断的工具
  • 刷题 | 牛客 - js入门15题(更ing)5/15知识点解答
  • ubuntu 启动不起来,光标闪烁 解决方法
  • 杰和科技工业整机AF208|防尘+静音+全天候运行
  • GPU/CUDA 发展编年史:从 3D 渲染到 AI 大模型时代
  • 应急管理部派出工作组赴山西太原小区爆炸现场指导救援处置
  • 新型算法助力听障人士听得更清晰
  • 俄伏尔加格勒机场正式更名为斯大林格勒机场
  • 美国清洗政治:一幅残酷新世界的蓝图正在展开
  • 西藏阿里地区日土县连发两次地震,分别为4.8级和3.8级
  • 遭遇大规模停电,西班牙内政部宣布进入国家紧急状态