Лучший способ создания перекрестных наборов инструментов на Mac OS X - PullRequest
12 голосов
/ 18 июня 2011

Последние три недели я потратил на изучение кросс-разработки под Mac OS X. Я хочу достичь двух отдельных результатов, но я верю, что их можно достичь одним и тем же путем.Я хочу

  1. настроить distcc, чтобы помочь моему старому ноутбуку Gentoo использовать iMac, который я недавно приобрел дома (OS X 10.6, 64-битная версия), который я также использую для разработки под iOS, поэтому инструменты Xcode 4
  2. разработайте мой любимый проект, представляющий собой ядро ​​elf для x86, x86_64 и arm (и я остановлюсь здесь, поскольку это OT).

Итак, послеМногое из того, что мы все делаем в этих случаях, я пришел к мысли, что для достижения первой цели мне нужно установить набор инструментов i686-pc-linux-gnu (или это i686-unknown-linux-gnu?) со всеми соответствующими версиями (например, gcc-4.4) и сделать его вызываемым через distcc.Это кажется разумной задачей, но, к сожалению, существуют более понятные инструменты и инструкции для создания цепочек инструментов для неясных арок, таких как sparc или mips, и нет ни одного разумно обновленного ресурса о том, как лучше использовать x86.Поэтому первый вопрос: есть ли кто-нибудь, кто успешно создал такую ​​цепочку инструментов и хочет разделить боль?:)

Второй гол.Мой текущий верстак сделан из Gentoo на ноутбуке i686 (да, так же, как и первая цель) со всеми обычными средствами разработки, и я использую QEMU для его тестирования (его интеграция с gdb потрясающая).Что я действительно хотел бы сделать, так это продолжать пользоваться ноутбуком во время путешествий (я много коммутирую) и продолжать работать и тестировать iMac, когда я дома (git великолепен в этом отношении).Отсюда второй вопрос: есть ли кто-нибудь, кто сделал что-то подобное и хочет поделиться?

Я бы очень признателен за любой вклад.Серьезно.

РЕДАКТИРОВАТЬ Я знаю о MacPorts, crosstool и crosstool-ng.Я попытался установить i386-elf-binutils 2.18 из MacPorts, чтобы обнаружить, что у меня 2,20 на моем ноутбуке.Также я не смог заставить gcc44 создавать объекты i686-pc-linux-gnu elf, и использование i386-elf-gcc не вариант, так как мне нужен 4.4, а упакованный - 4.3.

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

Это непростая задача, особенно потому, что вы хотите кросс-компиляцию для очень многих различных платформ.

Наиболее часто используемым подходом является запуск виртуальной машины с нужной ОС (например, VirtualBox , Parallels , VMWare Fusion ) и установите инструментальные средства для работы с ним.Это очень используется, потому что его не сложно настроить, и это также облегчает написание, тестирование и отладку кода для / из целевой системы.

Конечно, если вы будете искать достаточно, вы найдете все видыХакеры / хитрости для настройки набора инструментов в Mac OS X и компиляции кода для других архитектур:

  • Один из них использует Buildroot , но это означает, что нет официальногоподдержка Mac OS X.

  • Еще один, также интересный, предлагает пакет .dmg с инструментами, необходимыми для компиляции для Linux на MacOS X .

1 голос
/ 24 июня 2011

Вы уже упомянули Gentoo, поэтому я думаю, вам стоит взглянуть на Gentoo Prefix .Префикс Gentoo позволяет установить небольшую систему Gentoo в пользовательский каталог (= префикс).Оттуда вы можете запустить оболочку, которая позволит вам использовать portage (= система пакетов Gentoo), которая должна позволить вам установить необходимые инструменты.

Я не знаю, в каком виде сегодня находится префикс в OS X, ноЯ смог установить его на MacBook друга год назад.Если вам интересно, я могу дать дополнительную информацию о процессе установки , который может быть немного сложным.

...