7.7. GCC-11.2.0 中的 Libstdc++,第二遍

在构建第二遍的 GCC时,我们不得不暂缓安装 C++ 标准库,因为当时没有编译器能够编译它。我们不能使用那一节构建的编译器,因为它是一个本地编译器,不应在 chroot 外使用,否则可能导致编译产生的库被宿主系统组件污染。

估计构建时间: 0.8 SBU
需要硬盘空间: 1.1 GB

7.7.1. 安装目标系统的 Libstdc++

[注意]

注意

Libstdc++ 是 GCC 源代码的一部分。您应该先解压 GCC 压缩包并切换到解压出来的 gcc-11.2.0 目录。

创建一个符号链接,允许在 GCC 源码树中构建 Libstdc++:

ln -s gthr-posix.h libgcc/gthr-default.h

为 Libstdc++ 创建一个单独的构建目录,并切换到该目录:

mkdir -v build
cd       build

准备编译 Libstdc++:

../libstdc++-v3/configure            \
    CXXFLAGS="-g -O2 -D_GNU_SOURCE"  \
    --prefix=/usr                    \
    --disable-multilib               \
    --disable-nls                    \
    --host=$(uname -m)-lfs-linux-gnu \
    --disable-libstdcxx-pch

配置选项的含义:

CXXFLAGS="-g -O2 -D_GNU_SOURCE"

这些编译开关在构建完整的 GCC 时,由顶层目录 Makefile 传递。

--host=$(uname -m)-lfs-linux-gnu

我们需要模拟该软件包作为完整编译器的一部分构建时发生的过程。在完整构建时,GCC 构建系统会传递该选项。

--disable-libstdcxx-pch

这个开关防止安装预编译包含文件,它在当前阶段没有必要。

运行以下命令编译 Libstdc++:

make

安装这个库:

make install

该软件包的详细信息可以在第 8.26.2 节 “GCC 的内容”中找到。