gcc полностью на это способен. Компилятор Sun может быть способным, но я больше знаком с gcc. Во-первых, вы должны освоиться с сборкой gcc, а также решить, нужен ли вам только компилятор C или вам нужен C ++ или другие языки.
После того, как вы собрали gcc для хоста, на котором вы находитесь, вы можете перестроить gcc, включив в него цель для целевой машины, для которой вы хотите выполнить кросс-компиляцию.
При сборке кросс-компилятора вы должны правильно определить три вещи: сборку, хост и цель.
- сборка: машина, на которой вы строите
- host: машина, для которой вы создаете
- target: и машина, на которой GCC выдаст код для
Для кросс-компилятора сборка и хост будут одинаковыми, а цель будет другой. Например, вот как сообщить компилятору о необходимости компиляции для кросс-компиляции из Solaris x86 в Solaris Sparc:
./configure --build=x86_64-sun-solaris2.10 --host=x86_64-sun-solaris2.10 --target=sparc-sun-solaris2.10
Затем вы можете создать дополнительный компилятор для каждой цели, к которой вам нужно выполнить кросс-компиляцию.
Компилировать 32-битные и 64-битные исполняемые файлы на платформе, которая запускает оба, довольно просто. Все остальное будет немного сложнее. gcc на Mac построен с несколькими целями, и Apple упростила создание бинарных файлов для нескольких платформ. Все приложения для iPhone скомпилированы на платформе x86 и предназначены для процессора ARM. Если вы можете собрать компилятор для нужных вам целей, то кросс-компиляция обычно довольно проста.