Когда-то очень давно, была аналогичная задача. Работала наша команда на фрилансе на неких американских буржуинов. Одним из приоритетных направлений в работе был стриминг видео. Любыми способами, в обход фаерволлов, всё такое. И вот помимо прочего, понадобилось реализовать сервер трансляции видео на какой-то хитроумной камере, размером со спичечный коробок. Внутри у неё — флэшка на 32, что ли, метра, из которых свободно 2-3, процессор ARMv4l (вроде), и собственно камера. Денег особо ни у кого нет, ни у заказчика, ни у нас — оттого и дивайс такой лоуэнд. Да ещё ж надо девайс слать в Россию, а там у нас, как известно, медведы, цыгане и гусары с водкой. В общем, опасно дорогое оборудование слать (начало 2000х).
Тем не менее, то ли один, то ли два таких «спичечных коробка» прислали Диману (лидеру команды), и собственно дальше мы начали мучаться, с какой стороны к ним подойти. SDK дорогой, всё такое. Надо собирать самим. Вот так я и научился делать «Canadian cross»: на своём адском X86 Linux’е компилировал тулчейн для компиляции под платформу ARMv4l, но чтобы работал он не в Линуксе, а в Windows. Вот такой вот изврат, когда на одной платформе собирают компилятор под другую платформу, но чтобы работал он на третьей — так и называют, Canadian cross. Почему — лично мне неведомо. Ну, наверное потому, что «от них всего можно ожидать, они же канадцы!»…
Сейчас у меня ситуация попроще, нужно собрать простой кросскомпилятор для процессора TI MSP430, без изысков и канадцев. Да и прогресс на месте не стоит, как водится. Например, сейчас сборка тулчейна выглядит как-то так:
Такие дела. Рассчитываю за денёк управиться с тулчейном, а на следующий денёк управиться с компиляцией нового firmware.
И да, на самом деле команда для сборки кросскомпилятора будет чуть подлиннее:
Сначала установим оверлей для msp430:
emerge layman
layman -a msp430
Затем установим волшебный пакет, который занимается сборкой кросскомпиляторов:
emerge crossdev
И наконец, вот такой командой мы соберём компилятор C для MSP430:
crossdev -t msp430 -s4 --without-headers
Если не указать параметр -s4, тоже можно писать. На ассемблере. -s4 же соберёт весь тулчейн.
Ах да! Есть ещё готовый пакетик, msp430-gcc (ну и msp430-binutils тоже есть, понятное дело), но ведь это же скучно :=)