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

相关推荐
虾球xz1 小时前
CppCon 2017 学习:10 Core Guidelines You Need to Start Using Now
开发语言·c++·学习
南岩亦凛汀1 小时前
在Linux下使用wxWidgets进行跨平台GUI开发(三)
c++·跨平台·gui·开源框架·工程实战教程
帅_shuai_2 小时前
UE5 游戏模板 —— Puzzle 拼图游戏
c++·游戏·ue5·虚幻引擎
字节高级特工2 小时前
每日一篇博客:理解Linux动静态库
linux·运维·服务器·c语言·c++·windows·ubuntu
oioihoii2 小时前
C++11可变参数模板从入门到精通
前端·数据库·c++
多吃蔬菜!!!2 小时前
C/C++内存管理
c语言·jvm·c++
程序员如山石2 小时前
QTabWidget动态生成标签页
c++·qt
大老板a4 小时前
c++左值、右值还是不懂?进来五分钟学会
c++
Cherl.4 小时前
C++ 函数模板与类模板
开发语言·c++·类和对象··函数模板·类模板
foDol4 小时前
C++单例模式
c++·单例模式·设计模式