Lx4U-book/docs/build-temp-system/gcc-p2.md
2021-05-05 16:41:38 +03:00

4.9 KiB
Raw Blame History

Настройка

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

{{ mpc.url}}

{{ gmp.url}}

{{ mpfr.url}}

{{ isl.url}}

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

!> Обратите внимание, что распаковка указанных пакетов должна производится из каталога пакета GCC.

tar -xf ../{{ mpfr.fileName }}
mv -v {{ mpfr.name }}-{{ mpfr.version }} {{ mpfr.name }}
tar -xf ../{{ gmp.fileName }}
mv -v {{ gmp.name }}-{{ gmp.version }} {{ gmp.name }}
tar -xf ../{{ mpc.fileName }}
mv -v {{ mpc.name }}-{{ mpc.version }} {{ mpc.name }}
tar -xf ../{{ isl.fileName }}
mv -v {{ isl.name }}-{{ isl.version }} {{ isl.name }}

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

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

В документации пакета {{package.name}} рекомендуется использовать отдельную директорию для сборки:

mkdir build
cd build

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

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

Запустите скрипт configure:

../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