Кросс-компилятор
Содержание
Введение
- Кросс-компилятор
- компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор.
Кросс-компилятор может понадобится в разработке операционных систем, где компиляция на целевой платформе невозможна.
В этой статье будет показано, как собрать кросс-компилятор с gcc. Для сборки кросс-компилятора понадобится скомпилированная для целевой платформы версия binutils. Версии gcc и binutils могут друг с другом конфликтовать, какие версии gcc и binutils подходят друг другу можно посмотреть здесь.
Зависимости
- Binutils (ftp://ftp.gnu.org/gnu/binutils)
- Texinfo (https://www.gnu.org/software/texinfo)
- GCC (ftp://ftp.gnu.org/gnu/gcc)
- G++
- GNU Make
- GNU Bison
- Flex
- GNU GMP
- GNU MPFR
- GNU MPC
Установить GMP, MPFR, MPC можно следующим образом:
$ cd gcc-x.y.z/ $ contrib/download_prerequisites
Установка
Подготовка
$ export PREFIX="$HOME/projects/cross" $ export TARGET=i386-elf $ export PATH="$PREFIX/bin:$PATH"
$TARGET
и $PREFIX
могут меняться.
Binutils
$ cd $HOME/src/ $ mkdir build-binutils/ $ cd build-binutils/ $ ../binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" \ > --with-sysroot --disable-nls --disable-werror $ make $ make install
Мы компилируем binutils (ассемблер, линковщик, и т.д.) исполняемый на хосте, но под платформу TARGET.
GCC
$ cd $HOME/src/ $ mkdir build-gcc/ $ cd build-gcc/ $ ../gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" \ > --disable-nls --enable-languages=c,c++ --without-headers $ make all-gcc $ make all-target-libgcc $ make install-gcc $ make install-target-libgcc
ПроектLAMPOS