ercircle 发表于 2025-7-6 23:11:21

GCC编译器学习记录贴


打开编译器源码看看里面有什么~




gcc依赖(放gcc-15.1.0根目录):







国芯人工智能 发表于 2025-7-6 23:12:00

作为国芯人工智能团队的一员,针对“GCC编译器学习记录贴”,我们对该帖子中提到的GCC源码结构、依赖关系等内容进行专业分析,并结合实际应用场景提供技术参考与建议。

GCC(GNU Compiler Collection)是开源世界中最为重要的编译器工具链之一,广泛应用于嵌入式系统、操作系统开发及高性能计算等领域。从源码层面深入理解GCC,有助于开发者掌握编译原理、优化策略以及平台适配技巧,尤其在国产化替代和自主可控的背景下具有重要意义。

从帖子中提供的截图可见,用户已获取GCC 15.10版本的源码目录结构及部分依赖文件。GCC源码目录通常包含多个子模块,如gcc/(核心编译器逻辑)、libiberty/(辅助库)、gmp/、mpfr/、isl/等第三方依赖。这些依赖项在构建过程中起到关键作用,例如GMP用于大整数运算,MPFR支持高精度浮点计算,而ISL则用于整数线性规划优化。

在实际构建过程中,确保依赖版本的兼容性至关重要。例如,GCC 15.10可能依赖于特定版本的GMP、MPFR和ISL,若版本不匹配,可能导致编译失败或运行时错误。因此,在构建前应检查各依赖库的版本是否符合官方推荐配置。

此外,GCC源码中包含大量与目标架构相关的代码,如target.h、config/目录下的配置文件等。对于国产芯片架构(如RISC-V、ARM等),需要根据具体指令集对GCC进行定制化配置,包括添加新的后端支持、优化代码生成策略等。

综上所述,GCC源码的学习与研究不仅有助于提升编译器理解能力,也为后续的工具链开发、性能优化及国产化适配提供了坚实基础。建议开发者结合官方文档与社区资源,逐步深入GCC内部机制,同时关注其在不同平台上的应用实践。

[本文内容由国芯人工智能辅助生成,仅供参考]

ercircle 发表于 2025-7-7 22:53:38

此层向楼上点下载的 四位 好汉致敬~{:4_164:}




-------------------------------------这是一条分割线---------------------------------------------

先用Ai介绍下项目结构:

ercircle 发表于 2025-7-7 22:58:41

<h1>SDCC 编译器项目目录结构</h1>
<h2>项目概述</h2>
<p>SDCC (Small Device C Compiler) 是一个开源的、可重定向的 ANSI C 编译器套件,支持多种微控制器架构。</p>
<h2>根目录文件</h2>
<h3>构建和配置文件</h3>
<ul>
<li><code>configure</code> - 自动配置脚本 (321KB)</li>
<li><code>configure.ac</code> - 自动配置源文件 (40KB)</li>
<li><code>Makefile.in</code> - 主构建文件模板</li>
<li><code>Makefile.common.in</code> - 通用构建规则</li>
<li><code>sdccconf_in.h</code> - 编译器配置头文件</li>
<li><code>conf.mk</code> - 构建配置</li>
</ul>
<h3>项目文件</h3>
<ul>
<li><code>sdcc.sln</code> - Visual Studio 解决方案文件</li>
<li><code>all.vcxproj</code> - Visual Studio 项目文件</li>
<li><code>config.vcxproj</code> - 配置项目文件</li>
</ul>
<h3>文档和许可证</h3>
<ul>
<li><code>ChangeLog</code> - 项目变更日志 (1.8MB)</li>
<li><code>LICENSE</code> - 许可证文件</li>
<li><code>COPYING</code> - 版权信息</li>
<li><code>README</code> - 项目说明</li>
</ul>
<h2>主要目录结构</h2>
<h3>1. <code>src/</code> - 编译器核心源代码</h3>
<p><strong>功能</strong>: 包含SDCC编译器的主要源代码,包括词法分析器、语法分析器、代码生成器等核心组件。</p>
<p><strong>主要文件</strong>:</p>
<ul>
<li><code>SDCCmain.c</code> - 编译器主入口点</li>
<li><code>SDCC.y</code> - 语法分析器定义 (Yacc/Bison)</li>
<li><code>SDCC.lex</code> - 词法分析器定义 (Flex/Lex)</li>
<li><code>SDCCast.c/h</code> - 抽象语法树处理</li>
<li><code>SDCCicode.c/h</code> - 中间代码生成</li>
<li><code>SDCCsymt.c/h</code> - 符号表管理</li>
<li><code>SDCCopt.c/h</code> - 代码优化</li>
<li><code>SDCCpeeph.c/h</code> - 窥孔优化</li>
<li><code>SDCCglue.c/h</code> - 代码粘合</li>
<li><code>SDCCval.c/h</code> - 值计算</li>
<li><code>SDCCerr.c/h</code> - 错误处理</li>
</ul>
<p><strong>架构特定目录</strong>:</p>
<ul>
<li><code>mcs51/</code> - Intel 8051 系列支持</li>
<li><code>pic14/</code> - Microchip PIC14 系列支持</li>
<li><code>pic16/</code> - Microchip PIC16 系列支持</li>
<li><code>z80/</code> - Z80 系列支持</li>
<li><code>avr/</code> - Atmel AVR 系列支持</li>
<li><code>hc08/</code> - Motorola HC08 系列支持</li>
<li><code>stm8/</code> - STM8 系列支持</li>
<li><code>mos6502/</code> - MOS 6502 系列支持</li>
<li><code>pdk/</code> - Padauk PDK 系列支持</li>
<li><code>f8/</code> - Fairchild F8 系列支持</li>
<li><code>ds390/</code> - Dallas DS390 系列支持</li>
</ul>
<h3>2. <code>device/</code> - 设备支持文件</h3>
<p><strong>功能</strong>: 包含各种微控制器的头文件、库文件和设备特定代码。</p>
<h4><code>device/include/</code> - 标准头文件</h4>
<p><strong>通用头文件</strong>:</p>
<ul>
<li><code>stdio.h</code> - 标准输入输出</li>
<li><code>stdlib.h</code> - 标准库函数</li>
<li><code>string.h</code> - 字符串处理</li>
<li><code>math.h</code> - 数学函数</li>
<li><code>stdint.h</code> - 整数类型定义</li>
<li><code>float.h</code> - 浮点数定义</li>
<li><code>limits.h</code> - 数据类型限制</li>
<li><code>ctype.h</code> - 字符类型</li>
<li><code>assert.h</code> - 断言宏</li>
<li><code>stdbool.h</code> - 布尔类型</li>
<li><code>time.h</code> - 时间函数</li>
<li><code>signal.h</code> - 信号处理</li>
</ul>
<p><strong>架构特定头文件目录</strong>:</p>
<ul>
<li><code>mcs51/</code> - 8051 系列头文件</li>
<li><code>pic14/</code> - PIC14 系列头文件</li>
<li><code>pic16/</code> - PIC16 系列头文件</li>
<li><code>z80/</code> - Z80 系列头文件</li>
<li><code>hc08/</code> - HC08 系列头文件</li>
<li><code>ds390/</code> - DS390 系列头文件</li>
<li><code>ds400/</code> - DS400 系列头文件</li>
<li><code>z180/</code> - Z180 系列头文件</li>
<li><code>xa51/</code> - XA51 系列头文件</li>
<li><code>rab/</code> - RAB 系列头文件</li>
</ul>
<h4><code>device/lib/</code> - 标准库文件</h4>
<p><strong>通用库文件</strong>:</p>
<ul>
<li>数学运算库 (<code>_fsadd.c</code>, <code>_fsmul.c</code>, <code>_fsdiv.c</code> 等)</li>
<li>字符串处理库 (<code>strlen.c</code>, <code>strcpy.c</code>, <code>strcmp.c</code> 等)</li>
<li>内存操作库 (<code>_memset.c</code>, <code>_memcpy.c</code> 等)</li>
<li>类型转换库 (<code>_fs2sint.c</code>, <code>_sint2fs.c</code> 等)</li>
<li>算术运算库 (<code>_divsint.c</code>, <code>_modsint.c</code> 等)</li>
</ul>
<p><strong>架构特定库目录</strong>:</p>
<ul>
<li><code>mcs51/</code> - 8051 系列库</li>
<li><code>pic14/</code> - PIC14 系列库</li>
<li><code>pic16/</code> - PIC16 系列库</li>
<li><code>z80/</code> - Z80 系列库</li>
<li><code>hc08/</code> - HC08 系列库</li>
<li><code>stm8/</code> - STM8 系列库</li>
<li><code>mos6502/</code> - MOS 6502 系列库</li>
<li><code>pdk13/</code>, <code>pdk14/</code>, <code>pdk15/</code> - PDK 系列库</li>
<li><code>ds390/</code> - DS390 系列库</li>
<li><code>ds400/</code> - DS400 系列库</li>
</ul>
<h4><code>device/non-free/</code> - 非自由软件组件</h4>
<p>包含可能受版权保护的设备特定代码。</p>
<h3>3. <code>sdas/</code> - 汇编器</h3>
<p><strong>功能</strong>: 包含各种架构的汇编器实现。</p>
<p><strong>架构特定汇编器</strong>:</p>
<ul>
<li><code>as8051/</code> - 8051 汇编器</li>
<li><code>aspdk/</code> - PDK 汇编器</li>
<li><code>aspdk13/</code>, <code>aspdk14/</code>, <code>aspdk15/</code>, <code>aspdk16/</code> - 不同版本PDK汇编器</li>
<li><code>asz80/</code> - Z80 汇编器</li>
<li><code>asstm8/</code> - STM8 汇编器</li>
<li><code>as6808/</code> - HC08 汇编器</li>
<li><code>as6500/</code> - 6500 系列汇编器</li>
<li><code>asf8/</code> - F8 汇编器</li>
<li><code>asrab/</code> - RAB 汇编器</li>
<li><code>asgb/</code> - Game Boy 汇编器</li>
<li><code>astlcs90/</code> - TLCS90 汇编器</li>
<li><code>as8xcxxx/</code> - 8XCxxx 汇编器</li>
<li><code>xa51/</code> - XA51 汇编器</li>
</ul>
<h3>4. <code>support/</code> - 支持工具</h3>
<p><strong>功能</strong>: 包含编译过程中使用的各种工具和脚本。</p>
<p><strong>主要组件</strong>:</p>
<ul>
<li><code>cpp/</code> - C预处理器</li>
<li><code>scripts/</code> - 构建和工具脚本</li>
<li><code>sdbinutils/</code> - 二进制工具集</li>
<li><code>makebin/</code> - 二进制文件生成工具</li>
<li><code>packihx/</code> - Intel HEX 文件处理工具</li>
<li><code>util/</code> - 通用工具</li>
<li><code>tests/</code> - 测试套件</li>
<li><code>valdiag/</code> - 验证诊断工具</li>
<li><code>regression/</code> - 回归测试</li>
</ul>
<h3>5. <code>bin/</code> - 可执行文件模板</h3>
<p><strong>功能</strong>: 包含各种工具的可执行文件模板。</p>
<p><strong>主要工具</strong>:</p>
<ul>
<li><code>sdcc.in</code> - 主编译器</li>
<li><code>sdcpp.in</code> - C预处理器</li>
<li><code>sdar.in</code> - 静态库管理器</li>
<li><code>sdnm.in</code> - 符号表工具</li>
<li><code>sdobjcopy.in</code> - 目标文件复制工具</li>
<li><code>sdranlib.in</code> - 静态库索引工具</li>
</ul>
<h3>6. <code>doc/</code> - 文档</h3>
<p><strong>功能</strong>: 项目文档和用户手册。</p>
<p><strong>主要文档</strong>:</p>
<ul>
<li><code>sdccman.lyx</code> - 用户手册 (LyX格式)</li>
<li><code>INSTALL.txt</code> - 安装说明</li>
<li><code>README.txt</code> - 项目说明</li>
<li>各种架构的调用约定图 (SVG格式)</li>
</ul>
<h3>7. <code>sim/</code> - 模拟器</h3>
<p><strong>功能</strong>: 包含硬件模拟器。</p>
<p><strong>主要组件</strong>:</p>
<ul>
<li><code>ucsim/</code> - 通用微控制器模拟器</li>
</ul>
<h3>8. <code>debugger/</code> - 调试器</h3>
<p><strong>功能</strong>: 包含调试器相关代码。</p>
<p><strong>主要组件</strong>:</p>
<ul>
<li><code>mcs51/</code> - 8051 调试器支持</li>
</ul>
<h2>构建系统</h2>
<h3>主要构建文件</h3>
<ul>
<li><code>Makefile.in</code> - 主构建文件</li>
<li><code>Makefile.common.in</code> - 通用构建规则</li>
<li><code>main_in.mk</code> - 主构建规则</li>
<li><code>port.mk</code> - 端口特定构建规则</li>
<li><code>clean.mk</code> - 清理规则</li>
</ul>
<h3>配置系统</h3>
<ul>
<li><code>configure</code> - 自动配置脚本</li>
<li><code>configure.ac</code> - 配置源文件</li>
<li><code>aclocal.m4</code> - 自动工具宏</li>
<li><code>config.guess</code> - 系统类型猜测</li>
<li><code>config.sub</code> - 系统类型验证</li>
</ul>
<h2>支持的架构</h2>
<p>SDCC 支持多种微控制器架构:</p>
<ol>
<li><strong>Intel 8051 系列</strong> - 经典8位微控制器</li>
<li><strong>Microchip PIC</strong> - PIC14, PIC16 系列</li>
<li><strong>Zilog Z80</strong> - Z80, Z180, Z80N 系列</li>
<li><strong>Atmel AVR</strong> - 8位微控制器</li>
<li><strong>Motorola HC08</strong> - 8位微控制器</li>
<li><strong>STM8</strong> - STMicroelectronics 8位微控制器</li>
<li><strong>MOS 6502</strong> - 经典8位处理器</li>
<li><strong>Padauk PDK</strong> - 低成本微控制器</li>
<li><strong>Fairchild F8</strong> - 早期微控制器</li>
<li><strong>Dallas DS390/DS400</strong> - 高速微控制器</li>
</ol>
<h2>开发工具链</h2>
<p>SDCC 提供完整的开发工具链:</p>
<ol>
<li><strong>编译器</strong> - 将C代码编译为汇编代码</li>
<li><strong>汇编器</strong> - 将汇编代码转换为目标文件</li>
<li><strong>链接器</strong> - 将目标文件链接为可执行文件</li>
<li><strong>库管理器</strong> - 管理静态库</li>
<li><strong>调试器</strong> - 提供调试支持</li>
<li><strong>模拟器</strong> - 硬件模拟和测试</li>
</ol>
<p>这个目录结构展示了SDCC作为一个完整的嵌入式开发工具链的复杂性,支持多种微控制器架构,并提供从编译到调试的完整解决方案。</p>

ercircle 发表于 2025-7-7 23:00:22

<h1>GCC 15.1.0 项目目录结构</h1>
<h2>项目概述</h2>
<p>GCC (GNU Compiler Collection) 是一个开源的编译器集合,支持多种编程语言。本文档描述了GCC 15.1.0项目的目录结构和各目录的主要功能。</p>
<h2>根目录文件</h2>
<h3>核心配置文件</h3>
<ul>
<li><code>configure</code> - 主配置脚本 (601KB)</li>
<li><code>configure.ac</code> - 自动配置源文件 (131KB)</li>
<li><code>Makefile.in</code> - 主Makefile模板 (2.3MB)</li>
<li><code>Makefile.tpl</code> - Makefile模板 (78KB)</li>
<li><code>Makefile.def</code> - Makefile定义文件 (35KB)</li>
</ul>
<h3>许可证和版权文件</h3>
<ul>
<li><code>COPYING</code> - GNU通用公共许可证</li>
<li><code>COPYING.LIB</code> - GNU库通用公共许可证</li>
<li><code>COPYING3</code> - GNU通用公共许可证v3</li>
<li><code>COPYING3.LIB</code> - GNU库通用公共许可证v3</li>
<li><code>COPYING.RUNTIME</code> - 运行时库许可证</li>
</ul>
<h3>文档文件</h3>
<ul>
<li><code>README</code> - 项目说明文档</li>
<li><code>NEWS</code> - 版本更新新闻 (1.2MB)</li>
<li><code>ChangeLog</code> - 项目变更日志 (679KB)</li>
<li><code>MAINTAINERS</code> - 维护者信息 (64KB)</li>
<li><code>SECURITY.txt</code> - 安全相关信息</li>
</ul>
<h3>构建工具文件</h3>
<ul>
<li><code>config.guess</code> - 目标系统检测脚本</li>
<li><code>config.sub</code> - 目标系统验证脚本</li>
<li><code>install-sh</code> - 安装脚本</li>
<li><code>missing</code> - 缺失工具处理脚本</li>
<li><code>depcomp</code> - 依赖编译脚本</li>
<li><code>compile</code> - 编译脚本</li>
</ul>
<h2>主要目录结构</h2>
<h3>1. <code>gcc/</code> - 核心编译器</h3>
<p><strong>功能</strong>: GCC编译器的核心实现<br />
<strong>主要内容</strong>:</p>
<ul>
<li><code>c/</code> - C语言前端</li>
<li><code>cp/</code> - C++语言前端</li>
<li><code>fortran/</code> - Fortran语言前端</li>
<li><code>ada/</code> - Ada语言前端</li>
<li><code>go/</code> - Go语言前端</li>
<li><code>rust/</code> - Rust语言前端</li>
<li><code>d/</code> - D语言前端</li>
<li><code>objc/</code> - Objective-C语言前端</li>
<li><code>objcp/</code> - Objective-C++语言前端</li>
<li><code>m2/</code> - Modula-2语言前端</li>
<li><code>cobol/</code> - COBOL语言前端</li>
<li><code>common/</code> - 通用代码</li>
<li><code>config/</code> - 目标平台配置</li>
<li><code>testsuite/</code> - 测试套件</li>
<li><code>doc/</code> - 文档</li>
<li><code>analyzer/</code> - 静态分析器</li>
<li><code>jit/</code> - JIT编译器</li>
<li><code>lto/</code> - 链接时优化</li>
</ul>
<h3>2. <code>libstdc++-v3/</code> - C++标准库</h3>
<p><strong>功能</strong>: GNU C++标准库实现<br />
<strong>主要内容</strong>:</p>
<ul>
<li><code>src/</code> - 标准库源代码</li>
<li><code>include/</code> - 头文件</li>
<li><code>testsuite/</code> - 测试套件</li>
<li><code>doc/</code> - 文档</li>
<li><code>scripts/</code> - 构建脚本</li>
<li><code>libsupc++/</code> - 运行时支持库</li>
</ul>
<h3>3. <code>include/</code> - 公共头文件</h3>
<p><strong>功能</strong>: GCC项目使用的公共头文件<br />
<strong>主要内容</strong>:</p>
<ul>
<li><code>gdb/</code> - GDB调试器头文件</li>
<li><code>cuda/</code> - CUDA相关头文件</li>
<li>各种系统接口头文件</li>
<li>调试信息格式头文件 (dwarf2.h, ctf.h等)</li>
<li>插件API头文件</li>
</ul>
<h3>4. <code>config/</code> - 配置脚本</h3>
<p><strong>功能</strong>: 构建系统配置脚本和宏<br />
<strong>主要内容</strong>:</p>
<ul>
<li>各种.m4宏文件</li>
<li>目标平台特定配置</li>
<li>构建系统配置脚本</li>
<li>多线程支持配置</li>
<li>国际化配置</li>
</ul>
<h3>5. <code>contrib/</code> - 贡献工具</h3>
<p><strong>功能</strong>: 开发和维护工具<br />
<strong>主要内容</strong>:</p>
<ul>
<li><code>legacy/</code> - 遗留工具</li>
<li><code>regression/</code> - 回归测试工具</li>
<li><code>dg-lint/</code> - 测试套件检查工具</li>
<li><code>header-tools/</code> - 头文件工具</li>
<li><code>testsuite-management/</code> - 测试套件管理</li>
<li><code>gcc-changelog/</code> - 变更日志工具</li>
<li><code>unicode/</code> - Unicode处理工具</li>
<li><code>reghunt/</code> - 回归测试工具</li>
<li><code>vim-gcc-dev/</code> - Vim开发配置</li>
<li><code>mdcompact/</code> - 文档压缩工具</li>
</ul>
<h3>6. <code>maintainer-scripts/</code> - 维护脚本</h3>
<p><strong>功能</strong>: 项目维护和发布脚本<br />
<strong>主要内容</strong>:</p>
<ul>
<li><code>gcc_release</code> - 发布脚本</li>
<li><code>branch_changer.py</code> - 分支管理脚本</li>
<li><code>bugzilla-close-candidate.py</code> - Bugzilla管理脚本</li>
<li><code>update_web_docs_git</code> - 文档更新脚本</li>
</ul>
<h2>语言运行时库</h2>
<h3>7. <code>libgo/</code> - Go语言运行时</h3>
<p><strong>功能</strong>: Go语言的运行时库<br />
<strong>主要内容</strong>:</p>
<ul>
<li><code>runtime/</code> - 运行时实现</li>
<li><code>go/</code> - Go标准库</li>
<li><code>misc/</code> - 杂项工具</li>
<li><code>testsuite/</code> - 测试套件</li>
</ul>
<h3>8. <code>libada/</code> - Ada语言运行时</h3>
<p><strong>功能</strong>: Ada语言的运行时库</p>
<h3>9. <code>libgfortran/</code> - Fortran运行时</h3>
<p><strong>功能</strong>: GNU Fortran运行时库</p>
<h3>10. <code>libobjc/</code> - Objective-C运行时</h3>
<p><strong>功能</strong>: Objective-C运行时库</p>
<h3>11. <code>libphobos/</code> - D语言运行时</h3>
<p><strong>功能</strong>: D语言标准库</p>
<h3>12. <code>libgm2/</code> - Modula-2运行时</h3>
<p><strong>功能</strong>: Modula-2语言运行时</p>
<h3>13. <code>libgcobol/</code> - COBOL运行时</h3>
<p><strong>功能</strong>: COBOL语言运行时</p>
<h2>核心库</h2>
<h3>14. <code>libgcc/</code> - GCC运行时库</h3>
<p><strong>功能</strong>: GCC编译器运行时支持库</p>
<h3>15. <code>libiberty/</code> - 通用库</h3>
<p><strong>功能</strong>: 提供通用功能的库</p>
<h3>16. <code>libcpp/</code> - C预处理器</h3>
<p><strong>功能</strong>: C/C++预处理器实现</p>
<h3>17. <code>libdecnumber/</code> - 十进制数处理</h3>
<p><strong>功能</strong>: 十进制浮点数处理库</p>
<h3>18. <code>libbacktrace/</code> - 堆栈回溯</h3>
<p><strong>功能</strong>: 提供堆栈回溯功能</p>
<h3>19. <code>libquadmath/</code> - 四精度数学</h3>
<p><strong>功能</strong>: 四精度浮点数数学库</p>
<h3>20. <code>libatomic/</code> - 原子操作</h3>
<p><strong>功能</strong>: 原子操作库</p>
<h3>21. <code>libitm/</code> - 事务内存</h3>
<p><strong>功能</strong>: 事务内存支持库</p>
<h3>22. <code>libsanitizer/</code> - 内存检查器</h3>
<p><strong>功能</strong>: 地址消毒器、线程消毒器等</p>
<h3>23. <code>libgomp/</code> - OpenMP支持</h3>
<p><strong>功能</strong>: OpenMP并行编程支持</p>
<h3>24. <code>libvtv/</code> - 虚表验证</h3>
<p><strong>功能</strong>: C++虚表验证库</p>
<h3>25. <code>libssp/</code> - 栈保护</h3>
<p><strong>功能</strong>: 栈溢出保护库</p>
<h3>26. <code>libgrust/</code> - Rust支持</h3>
<p><strong>功能</strong>: Rust语言支持库</p>
<h3>27. <code>libcody/</code> - 代码生成</h3>
<p><strong>功能</strong>: 代码生成支持库</p>
<h2>工具和插件</h2>
<h3>28. <code>gotools/</code> - Go工具</h3>
<p><strong>功能</strong>: Go语言相关工具</p>
<h3>29. <code>c++tools/</code> - C++工具</h3>
<p><strong>功能</strong>: C++语言相关工具</p>
<h3>30. <code>gnattools/</code> - Ada工具</h3>
<p><strong>功能</strong>: Ada语言相关工具</p>
<h3>31. <code>lto-plugin/</code> - LTO插件</h3>
<p><strong>功能</strong>: 链接时优化插件</p>
<h3>32. <code>libcc1/</code> - 编译器接口</h3>
<p><strong>功能</strong>: 编译器接口库</p>
<h2>第三方库</h2>
<h3>33. <code>zlib/</code> - 压缩库</h3>
<p><strong>功能</strong>: 数据压缩库</p>
<h3>34. <code>gmp/</code> - 多精度算术</h3>
<p><strong>功能</strong>: GNU多精度算术库</p>
<h3>35. <code>mpfr/</code> - 多精度浮点</h3>
<p><strong>功能</strong>: 多精度浮点运算库</p>
<h3>36. <code>mpc/</code> - 复数运算</h3>
<p><strong>功能</strong>: 复数算术库</p>
<h3>37. <code>isl/</code> - 整数集库</h3>
<p><strong>功能</strong>: 整数集操作库</p>
<h3>38. <code>gettext/</code> - 国际化</h3>
<p><strong>功能</strong>: 国际化支持库</p>
<h2>其他目录</h2>
<h3>39. <code>fixincludes/</code> - 头文件修复</h3>
<p><strong>功能</strong>: 修复系统头文件问题</p>
<h3>40. <code>INSTALL/</code> - 安装文档</h3>
<p><strong>功能</strong>: 安装说明文档</p>
<h3>41. <code>.github/</code> - GitHub配置</h3>
<p><strong>功能</strong>: GitHub工作流和配置</p>
<h3>42. <code>.forgejo/</code> - Forgejo配置</h3>
<p><strong>功能</strong>: Forgejo平台配置</p>
<h3>43. <code>.vscode/</code> - VS Code配置</h3>
<p><strong>功能</strong>: Visual Studio Code配置</p>
<h2>构建系统</h2>
<p>GCC使用基于Autotools的构建系统:</p>
<ul>
<li><code>configure.ac</code> - 自动配置源文件</li>
<li><code>Makefile.tpl</code> - Makefile模板</li>
<li><code>config/</code> - 配置脚本和宏</li>
<li>各种构建工具脚本</li>
</ul>
<h2>测试系统</h2>
<ul>
<li><code>gcc/testsuite/</code> - 主测试套件</li>
<li><code>libstdc++-v3/testsuite/</code> - C++标准库测试</li>
<li><code>libgo/testsuite/</code> - Go运行时测试</li>
<li>各语言库的测试套件</li>
</ul>
<h2>文档系统</h2>
<ul>
<li><code>gcc/doc/</code> - 编译器文档</li>
<li><code>libstdc++-v3/doc/</code> - C++标准库文档</li>
<li><code>include/</code> - API文档头文件</li>
</ul>
<p>这个目录结构展示了GCC作为一个多语言编译器集合的复杂性,每个目录都有其特定的功能和职责。</p>

ercircle 发表于 2025-7-11 21:29:58

<h1>编译SDCC</h1>
<p>基于ubuntu编译,安装依赖 :</p>
<pre><code>sudo apt-get install build-essential bison flex zlib1g-dev libboost-all-dev gputils
</code></pre>
<p>编译:</p>
<pre><code>./configure
make
</code></pre>
<p>编译完成:</p>
<p><img src="data/attachment/forum/202507/11/212740m5nlalcn82axll1l.png" alt="image.png" title="image.png" /></p>
<h1>编译GCC</h1>
<pre><code>mkdir build
cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib--enable-bootstrap--prefix=/usr/local/gcc-15.1.0
make -j 4
</code></pre>
<p>编译完成:</p>
<p><img src="data/attachment/forum/202507/11/212857xk73aarsvhbkyzh2.png" alt="image.png" title="image.png" /></p>
页: [1]
查看完整版本: GCC编译器学习记录贴