5.8. GCC-8.2.0 中的 Libstdc++

Libstdc++ 是 C++ 标准库,我们需要它才能编译 C++ 代码 (GCC 的一部分用 C++ 编写)。但在构建 第一遍的 GCC 时我们不得不暂缓安装它, 因为它依赖于当时还没有安装到 /tools 的 glibc。

估计编译时间: 0.5 SBU
需要硬盘空间: 803 MB

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

[注意]

注意

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

为 Libstdc++ 创建一个单独的构建目录,并进入它:

mkdir -v build
cd       build

准备编译 Libstdc++:

../libstdc++-v3/configure           \
    --host=$LFS_TGT                 \
    --prefix=/tools                 \
    --disable-multilib              \
    --disable-nls                   \
    --disable-libstdcxx-threads     \
    --disable-libstdcxx-pch         \
    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/8.2.0

配置选项的含义:

--host=...

使用我们刚刚编译的交叉编译器,而不是 /usr/bin 中的宿主系统编译器。

--disable-libstdcxx-threads

由于我们目前还没有构建 C 线程库,C++ 线程库也不能构建。

--disable-libstdcxx-pch

这个开关防止安装预编译头文件,在这个阶段不需要它们。

--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/8.2.0

这是 C++ 编译器搜索标准头文件的位置。在正常的构建过程中, 这项信息被顶层目录构建系统自动传递给 Libstdc++ configure 脚本。 然而我们这里没有使用顶层构建系统,因此必须明确给出这项信息。

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

make

安装这个库:

make install

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