编译 GNU GCC 12.2.0 『在 aarch64 环境中构建』

编译 GNU GCC 12.2.0 『在 aarch64 环境中构建』

# 编译 GCC12
# 以下代码仅在树莓派4B硬件环境 + Fedora 36: Raw image for aarch64 系统环境下的 fedora36 容器环境 下进行验证测试及安装
# 详情请参考 https://gcc.gnu.org/install/

# 1、安装构建依赖
dnf install ncurses wget coreutils systemd NetworkManager openssh-server openssh-clients NetworkManager-ssh libssh-config sshpass libssh libssh2 libgcc gcc gcc-gfortran gcc-c++ gcc-gnat libgnat-static gcc-gdc gawk binutils libstdc++-devel libstdc++-static libstdc++ gzip bzip2 make tar perl m4 isl zstd automake gettext gperf autogen guile 
### 编译 aarch64-linux-gnu 工具链的过程 #### 1. **准备环境** 为了编译适用于 ARM 架构的工具链,首先需要确保主机具备基本的开发环境。这通常意味着安装一些基础的构建工具和库文件。 ```bash sudo apt update && sudo apt upgrade -y sudo apt install build-essential flex bison texinfo libgmp-dev libmpc-dev libmpfr-dev wget git -y ``` 以上命令用于更新系统并安装必要的依赖项[^7]。 #### 2. **下载源代码** 可以从 GNU 的官方网站或者其他可靠的镜像站点获取最新的 GCC 和 Binutils 源码包。这里假设我们使用的是 GCC 12.2.0 和 Binutils 2.39 版本作为例子: ##### 获取 binutils 源码 ```bash wget https://ftp.gnu.org/gnu/binutils/binutils-2.39.tar.gz tar xf binutils-2.39.tar.gz cd binutils-2.39 ``` ##### 获取 gcc 源码 ```bash cd .. wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz tar xf gcc-12.2.0.tar.gz cd gcc-12.2.0 contrib/download_prerequisites ``` 最后一步 `download_prerequisites` 是用来自动下载 GCC 所需的一些额外组件(如 GMP, MPFR 等),从而简化后续过程[^8]。 #### 3. **创建独立的工作目录** 为了避免污染原始源码树,在单独的位置来进行实际构建是比较好的实践方法。 ```bash mkdir ~/build-binutils mkdir ~/build-gcc ``` #### 4. **编译 binutils** 进入之前建立的专门用于编译binutils的地方,并运行如下指令: ```bash cd ~/build-binutils ../binutils-2.39/configure --target=aarch64-linux-gnu --prefix=/opt/cross --disable-nls --enable-lto --with-system-zlib make -j$(nproc) sudo make install ``` 这里的选项解释如下: - `--target`: 设定目标平台架构; - `--prefix`: 制定最终安装位置; - `--disable-nls`: 关闭本地化支持以减少不必要的麻烦; - `--enable-lto`: 启用链接时间优化功能; - `--with-system-zlib`: 使用系统的 zlib 库而非自带版本[^9]。 #### 5. **编译 gcc** 接着转向GCC部分的操作流程同样重要。 ```bash cd ~/build-gcc ../gcc-12.2.0/configure --target=aarch64-linux-gnu --prefix=/opt/cross --disable-nls --enable-languages=c,c++ --without-headers --with-newlib --with-sysroot=$(pwd)/sysroot --with-build-time-tools=/opt/cross/aarch64-linux-gnu/bin make all-gcc -j$(nproc) make all-target-libgcc -j$(nproc) sudo make install-gcc sudo make install-target-libgcc ``` 注意其中几个关键参数的作用: - `--enable-languages`: 明确指定要启用的语言子集; - `--without-headers`: 表明不涉及任何操作系统头文件的情况; - `--with-newlib`: 替代标准C库的选择方案之一; - `--with-sysroot`: 提供一个虚拟根目录给交叉编译器识别资源所在之处[^10]。 完成上述步骤后即获得了一个完整的针对 AArch64 架构设计的GNU工具集合。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值