Lx4U-book/docs/build-temp-system/gcc-p2.md
2021-11-04 19:24:31 +03:00

3.9 KiB
Raw Blame History

{{ include('../packages/gcc/README.md') }}

Подготовка

Дополнительные необходимые файлы

{{ include('../packages/mpc/.url') }}
{{ include('../packages/gmp/.url') }}
{{ include('../packages/mpfr/.url') }}
{{ include('../packages/isl/.url') }}

Распакуйте дополнительные пакеты:

???+ warning "Предупреждение" Обратите внимание, что распаковка указанных пакетов должна производится из каталога пакета GCC.

tar -xf ../{{ include('../packages/mpfr/.filename') }}
mv -v {{ include('../packages/mpfr/.filename') }} mpfr
tar -xf ../{{ include('../packages/gmp/.filename') }}
mv -v {{ include('../packages/gmp/.filename') }} gmp
tar -xf ../{{ include('../packages/mpc/.filename') }}
mv -v {{ include('../packages/mpc/.filename') }} mpc
tar -xf ../{{ include('../packages/isl/.filename') }}
mv -v {{ include('../packages/isl/.filename') }} isl

Смените пути установки библиотек:

sed -e '/m64=/s/lib64/lib/' \
    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
    -i.orig gcc/config/i386/t-linux64

Пакет GCC требует использовать отдельную директорию для сборки. Создайте её:

mkdir -v build
cd       build

Разрешим сборку libgcc с поддержкой многопоточности:

mkdir -pv $LIN_TGT/libgcc
ln -s ../../../libgcc/gthr-posix.h $LIN_TGT/libgcc/gthr-default.h

Настройка:

../configure                   \
    --build=$(../config.guess) \
    --host=$LIN_TGT            \
    --prefix=/usr              \
    CC_FOR_TARGET=$LIN_TGT-gcc \
    --with-build-sysroot=$LIN  \
    --enable-initfini-array    \
    --disable-nls              \
    --disable-decimal-float    \
    --disable-libatomic        \
    --disable-libgomp          \
    --disable-libquadmath      \
    --disable-libssp           \
    --disable-libvtv           \
    --disable-libstdcxx        \
    --enable-languages=c,c++   \
    --disable-multilib

Для multilib

замените параметр --disable-multilib на --enable-multilib --with-multilib-list=m64,m32

Значения параметров

--enable-initfini-array - параметр заставляет использовать некоторые внутренние структуры данных, которые необходимы, но не могут быть обнаружены при построении кросс-компилятора.

--disable-decimal-float, --disable-threads, --disable-libatomic, --disable-libgomp, --disable-libquadmath, --disable-libssp, --disable-libvtv, --disable-libstdcxx - параметр отключают поддержку десятичных расширений с плавающей запятой, потоковой передачи, libatomic, libgomp, libquadmath, libssp, libvtv и стандартной библиотеки C++ соответственно. Эти функции не будут скомпилированы при сборке кросс-компилятора и не являются необходимыми для кросс-компиляции временной libc.

--enable-languages=c,c++ - опция включает поддержку компиляторов C и C++. Это единственные языки, которые нужны сейчас.

Сборка

make

Установка

make DESTDIR=$LIN install

Некоторые программы используют команду cc, а не gcc. Создайте символическую ссылку на gcc:

ln -sv gcc $LIN/usr/bin/cc