Кросс-компилятор

Содержание

Введение

Кросс-компилятор
компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор.

Кросс-компилятор может понадобится в разработке операционных систем, где компиляция на целевой платформе невозможна.

В этой статье будет показано, как собрать кросс-компилятор с gcc. Для сборки кросс-компилятора понадобится скомпилированная для целевой платформы версия binutils. Версии gcc и binutils могут друг с другом конфликтовать, какие версии gcc и binutils подходят друг другу можно посмотреть здесь.

Зависимости

Установить 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