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.acmakefile.in

相关推荐
C_Liu_2 小时前
C++:list
开发语言·c++
my rainy days2 小时前
C++:友元
开发语言·c++·算法
鄃鳕3 小时前
python 字典 列表 类比c++【python】
c++·python
保持低旋律节奏4 小时前
C++——list链表
c++·链表·list
.小小陈.5 小时前
数据结构2:单链表
c语言·开发语言·数据结构·笔记·学习方法
2401_841495645 小时前
【数据结构】基于Floyd算法的最短路径求解
java·数据结构·c++·python·算法··floyd
纵有疾風起6 小时前
C++模版:模板初阶及STL简介
开发语言·c++·经验分享·开源
小莞尔6 小时前
【51单片机】【protues仿真】基于51单片机送带计数器系统
c语言·单片机·嵌入式硬件·物联网·51单片机
QT 小鲜肉6 小时前
【个人成长笔记】Qt Creator快捷键终极指南:从入门到精通
开发语言·c++·笔记·qt·学习·学习方法
勇闯逆流河6 小时前
【C++】用红黑树封装map与set
java·开发语言·数据结构·c++