Подробная информация об этом пакете приведена в Раздел 8.26.2, «Содержимое пакета GCC.»
Libstdc++ — это стандартная библиотека C++. Она нужна для компиляции кода C++ (часть GCC написана на C++), когда мы собирали GCC-Проход 1, нам пришлось отложить её установку, потому что она зависит от библиотеки glibc, которой еще не было в целевом каталоге.
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.»