本パッケージの詳細は 「GCC の構成」を参照してください。
Libstdc++ は標準 C++ ライブラリです。 (GCC の一部が C++ によって書かれているため)C++ をコンパイルするために必要となります。 ただし gcc 1 回め をビルドするにあたっては、このライブラリのインストールを個別に行わなければなりません。 それは Libstdc++ が Glibc に依存していて、対象ディレクトリ内ではまだ Glibc が利用できない状態にあるからです。
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 の構成」を参照してください。