Есть ли способ использовать gcc для преобразования C в MIPS? - PullRequest
16 голосов
/ 14 ноября 2010

Я выполнил преобразование C в MIPS для класса и хочу сравнить его со сборкой.Я слышал, что есть способ настроить gcc так, чтобы он мог преобразовывать код C в архитектуру MIPS, а не в архитектуру x86 (мой компьютер использует процессор Intel i5) и печатать вывод.

Запуск терминалав Ubuntu (которая поставляется с gcc), какую команду я использую, чтобы настроить gcc для преобразования в MIPS?Есть ли что-то, что мне нужно установить?

РЕДАКТИРОВАТЬ: Позвольте мне уточнить.Пожалуйста прочтите это.Я не ищу, какой компилятор использовать, или людей, которые говорят: «Вы могли бы кросс-компилировать, но вместо этого вы должны использовать другую вещь, в которой нет инструкций по настройке».

Если вы собираетесь опубликовать это, по крайней мере, обратитесь ко мне к инструкции.GCC пришел с Ubuntu.У меня нет опыта установки компиляторов, и найти онлайн-учебники для чего-то другого, кроме GCC, нелегко.Тогда есть случай кросс-компиляции, о котором мне нужно знать.Спасибо.

Ответы [ 5 ]

26 голосов
/ 14 ноября 2010

GCC может создавать код сборки для большого числа архитектур, включая MIPS.Но какая архитектура предназначена для данного экземпляра GCC, определяется при компиляции самого GCC.Предварительно скомпилированный двоичный файл, который вы найдете в системе Ubuntu, знает о x86 (возможно, как в 32-битном, так и в 64-битном режимах), но не о MIPS.

Компиляция GCC с целевой архитектурой, отличной от архитектуры, на которой будет работать сам GCCРабота под управлением известна как подготовка набора инструментов для кросс-компиляции .Это выполнимо, но требует немного чтения документации и терпения;вам обычно нужно сначала создать кросс-ассемблер и кросс-линкер (GNU binutils), а затем собрать сам кросс-GCC.

Я рекомендую использовать buildroot .Это набор скриптов и make-файлов, предназначенных для помощи в создании полного набора инструментов и утилит кросс-компиляции.В конце дня вы получите полную ОС и инструменты разработки для целевой системы.Это включает в себя кросс-компилятор, который вам нужен.

Другим совершенно другим решением является использование QEMU .Это эмулятор для различных процессоров и систем, включая системы MIPS.Вы можете использовать его для запуска виртуальной машины с процессором MIPS и установки на ней операционной системы для MIPS, например Debian , дистрибутива Linux.Таким образом, вы получаете native GCC (GCC, работающий в системе MIPS и создающий код для MIPS).

Способ QEMU может быть несколько проще;использование кросс-компиляции требует некоторого понимания некоторых волосатых деталей.В любом случае вам потребуется около 1 ГБ свободного дискового пространства.

5 голосов
/ 14 ноября 2010

Это не конфигурация, вам нужна версия GCC, которая кросс-компилируется в MIPS.Для этого требуется специальная сборка GCC и довольно волосатый для настройки (сборка GCC не для слабонервных).

Я бы рекомендовал использовать LCC дляэтот.Кросс-компиляцию с LCC гораздо проще, чем с GCC, а сборка LCC на современных компьютерах занимает считанные секунды.

2 голосов
/ 14 ноября 2010

Вам нужно загрузить исходный код в binutils и gcc-core и скомпилировать что-то вроде ../configure --target=mips ....Возможно, вам придется выбрать конкретную цель MIPS.Тогда вы можете использовать mips-gcc -S.

1 голос
/ 14 ноября 2010

Вы можете кросс-компилировать GCC, чтобы он генерировал код MIPS вместо x86.Это хороший опыт обучения.

Если вы хотите быстрых результатов, вы также можете получить готовый GCC с поддержкой MIPS.Одним из них является CodeSourcery Lite Toolchain.Это бесплатно, подходит для многих архитектур (включая MIPS), и они готовы использовать двоичные файлы для Linux и Windows.

0 голосов
/ 14 ноября 2010

Вы должны скомпилировать свою собственную версию gcc, которая может кросс-компилировать. Конечно, это не легко, поэтому вы можете искать другой подход ... например это SDK.

...