Blog: Alter World

Виртуальный мир является своеобразным Alter Ego мира реального…

Кросскомпиляция

Комментариев нет 13 мая 2010, 11:29 • BSD, Linux

Вчера потребовалось собрать одну программу для моделировани поведения двойных звезд (nightfall). Собственно говоря с этой программой я знаком уже довольно давно — еще со времен FreeBSD на десктопе. После перехода на linux (Debian GNU/Linux) оказалось, что на линуксах эта программа есть далеко не у всех дистрибутивов. К примеру, в rpm-дистрибутивах отыскать ее не проблема, а вот в deb-дистрибутивах ее нет. Не беда, собрал я себе эту программу и даже подготовил пакетик для Debian'а. Вчера я решил несколько улучшить этот пакет — собрать его с поддержкой OpenGL'я. Собрал, не проблема, но (!) загорелось мне на моей x86-й машине собрать этот пакет и для amd64-машин. А в идеале собрать статический пакет для Windows и Mac OS X на рабочей Linux-машине.

По пути домой я обмыслил это дело и нашел пути решения проблемы, но, к сожалению, самое верное идеологическое и техническое решение сопряжено с огромными затратами по времени. Что мне совсем не улыбается. Поэтому я обдумал этот вопрос еще раз и задал его на одном из самых популярных ресурсов об Linux и OpenSource.

Для истории я его скопирую сюда:

В наличии есть linux (x86) и некоторая программа на си. Задача — собрать ее на других архитектурах и платформах. Решение в лоб простое — найти машину нужной архитектуры и с нужной платформой и собрать программу там. Но так не интересно 🙂 вопрос в следующем: как научить debian собирать программы для linux, freebsd, windows и mac os x, с вариациями архитектур у этих платформ x86, x86-64 и ppc?

К счастью, с ответами мне помогли, хотя нельзя сказать, что я их не ожидал. Ожидал, и именно по направлению кросскомпиляции. По идее, Debian работает на довольно широком спектре архитектур и инструменты для кросскомпиляции у него должны быть хорошо развиты. Это по идее, в теории, так сказать. На практике оказалось, что в репозиториях инструментов для кросскомпиляции практически нет. Меня это неприятно удивило. Сильно неприятно. Зато на соседней FreeBSD с инструментами для кросскомпиляции все чудесно (оно и понятно — как никак sources-based система).

Получается, что проблему я частично решил (соберу инструментарий кросскомпиляции на FreeBSD и будут собирать софт там), но вот применительно к Debian'у все получается плохо — инструменты приделся собрать самому из исходников, что не debian-way вобщем-то. Переходить на что-нибудь типа Gentoo или Slackware большого желания нет — потому что одной из причин ухода с FreeBSD на десктопе было то, что надоело заниматься перманентной компиляцией очередного пакета. В целом я посматриваю на Scientific Linux, Fedora и openSUSE как возможные дистрибутивы для моей рабочей машины. Буду ставить их в VirtualBox и «щупать» — что больше понравится, на то и перееду.

Добавление: Я оказался не прав — в Debian GNU/Linux можно собрать инструментарий для кросскомпиляции при помощи пакетов, помогающих собрать пакеты кросскомпиляции. Они называются binutils-multiarch и gcc-multilib.

Ещё заметки на эту тему:

Комментариев нет

Вы можете подписаться на комментарии к этой статье через RSS или отправить к ней TrackBack.

Оставить свое мнение

XHTML: Вы можете использовать эти тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>