5.6. Libstdc++ из GCC-12.2.0

Libstdc++ — это стандартная библиотека C++. Она нужна для компиляции кода C++ (часть GCC написана на C++), когда мы собирали GCC-Проход 1, нам пришлось отложить её установку, потому что она зависит от библиотеки glibc, которой еще не было в целевом каталоге.

Приблизительное время сборки: 0.4 SBU
Требуемое дисковое пространство: 1.1 GB

5.6.1. Установка библиотеки Libstdc++

[Примечание]

Примечание

Libstdc++ является частью исходников GCC. Сначала вы должны распаковать архив GCC и перейти в каталог gcc-12.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++/12.2.0

Значение параметров настройки:

--host=...

Указывает, что кросс-компилятор, который мы только что создали, должен использоваться вместо того, который находится в /usr/bin.

--disable-libstdcxx-pch

Этот аргумент предотвращает установку предварительно скомпилированных include-файлов, которые на данном этапе не нужны.

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

Указывает каталог установки для include-файлов. Поскольку libstdc++ является стандартной библиотекой C++ для LFS, этот каталог должен соответствовать местоположению, в котором компилятор C++ ($LFS_TGT-g++) будет искать стандартные включаемые файлы C++. При обычной сборке эта информация автоматически передается при выполнении configure из каталога верхнего уровня. В нашем случае эта информация должна быть указана явно. Компилятор C++ добавит путь sysroot $LFS (указанный в GCC Проход 1) к пути поиска include-файлов, поэтому он фактически будет искать в $LFS/tools/$LFS_TGT/include/c++/12.2.0. Комбинация переменной DESTDIR (в приведенной ниже команде make install) и этого аргумента обеспечивает установку заголовочных файлов туда.

Скомпилируйте libstdc++, выполнив:

make

Установите библиотеку:

make DESTDIR=$LFS install

Удалите архивные файлы libtool, поскольку они потенциально опасны при кросс-компиляции:

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

Подробная информация об этом пакете приведена в Раздел 8.26.2, «Содержимое пакета GCC.»