5.6. GCC-13.2.0 から取り出した libstdc++

Libstdc++ は標準 C++ ライブラリです。 (GCC の一部が C++ によって書かれているため)C++ をコンパイルするために必要となります。 ただし gcc 1 回め をビルドするにあたっては、このライブラリのインストールを個別に行わなければなりません。 それは Libstdc++ が Glibc に依存していて、対象ディレクトリ内ではまだ Glibc が利用できない状態にあるからです。

概算ビルド時間: 0.2 SBU
必要ディスク容量: 1.1 GB

5.6.1. Libstdc++ のインストール

[注記]

注記

libstdc++ のソースは GCC に含まれます。 したがってまずは GCC の tarball を伸張 (解凍) した上で gcc-13.2.0 ディレクトリに入って作業を進めます。

Libstdc++ のためのディレクトリを新たに生成して移動します。

mkdir -v build
cd       build

Libstdc++ をコンパイルするための準備をします。

../libstdc++-v3/configure           \
    --host=$LFS_TGT                 \
    --build=$(../config.guess)      \
    --prefix=/usr                   \
    --disable-multilib              \
    --disable-nls                   \
    --disable-libstdcxx-pch         \
    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0

configure オプションの意味

--host=...

利用するクロスコンパイラーを指示するものであり、/usr/bin にあるものではなく、まさに先ほど作り出したものを指定するものです。

--disable-libstdcxx-pch

本スイッチは、既にコンパイルされたインクルードファイルをインストールしないようにします。 これはこの時点では必要ないためです。

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

インクルードファイルをインストールするディレクトリを指定します。 Libstdc++ は LFS における標準 C++ ライブラリであるため、そのディレクトリは C++ コンパイラー ($LFS_TGT-g++) が標準 C++ インクルードファイルを探し出すディレクトリでなければなりません。 通常のビルドにおいてそのディレクトリ情報は、最上位ディレクトリの configure のオプションにて指定します。 ここでの作業では、上のようにして明示的に指定します。 C++ コンパイラーは sysroot パスに $LFS(GCC 1 回めのビルド時に指定)をインクルードファイルの検索パスに加えます。 したがって実際には $LFS/tools/$LFS_TGT/include/c++/13.2.0 となります。 DESTDIR 変数(以下の make install にて指定)とこのスイッチを組み合わせることで、ヘッダーファイルをそのディレクトリにインストールするようにします。

Libstdc++ をコンパイルします。

make

ライブラリをインストールします。

make DESTDIR=$LFS install

クロスコンパイルにとっては libtool アーカイブファイルが邪魔になるため削除します。

rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la

本パッケージの詳細は 「GCC の構成」を参照してください。