2010-11-14 2 views
16

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

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

EDIT: Позвольте пояснить. Пожалуйста прочтите это. Я не ищу, какой компилятор использовать, или люди, говорящие «хорошо, что вы можете перекрестно скомпилировать, но вместо этого вы должны использовать эту другую вещь, у которой нет инструкций по настройке».

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

+3

Возможно, вы просто хотите «скомпилировать», а не «конвертировать». Компилятор всегда «конвертирует» один язык в другой. Если вы запускаете x86 boxen, он обычно преобразует исходный язык в исполняемый файл x86, подходящий для вашей ОС, но компиляторы не ограничиваются таргетингом на их хост-архитектуру и архитектуру ... – dmckee

+0

Да, это то, о чем я прошу. Спасибо за исправление моего использования терминологии, но можете ли вы ответить на фактический вопрос? – Mike

ответ

2

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

+0

, пожалуйста, объясните немного больше. Мне также нужно конвертировать из C в MIPSR3000. –

+0

@ShankhadeepMukerji Посмотрите на https://gcc.gnu.org/install/. На шаге 3 рассмотрим «целевую спецификацию». –

5

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

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

+1

Спасибо за быстрый ответ, но он обходит мой вопрос. Вы говорите мне, что я должен делать в целом (кросс-компиляция?), А затем направляю меня в другой компилятор. Я подробно спрашиваю, как получить эту версию GCC и какие команды использовать, а не использовать GCC или другой компилятор. Тогда есть возможность настроить этот компилятор, для которого нет никаких инструкций на сайте LCC. – Mike

+5

Я предполагал, что ваш основной интерес заключался в компиляции C в сборку MIPS, но не с GCC. Если вы настаиваете на использовании GCC для этого, продолжайте, но учтите, что вас предупредили - не стоит собирать только одну программу (особенно если вы боретесь с получением LCC для сборки). Некоторые (относительно устаревшие, но я не нашел ничего нового) инструкции по сборке перекрестных GCC находятся здесь: http://gcc.gnu.org/wiki/Building_Cross_Toolchains_with_gcc –

+1

Моя ошибка. Я думаю, что неправильно понял ваш ответ. Да, мой интерес заключается в преобразовании C в MIPS. Но если вы хотите сказать мне, что я использую другой компилятор, можете ли вы сослаться на меня где-нибудь, что объясняет, как его настроить, а затем как скомпилировать с ним MIPS? Я не могу найти ни одной из этих вещей. – Mike

0

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

1

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

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

http://www.codesourcery.com/sgpp/lite/mips/portal/[email protected]=lite

25

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

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

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

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

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

+1

Если бы я мог сэр, я бы дважды вас отвел за этот ответ, приветствую – timB33

+0

, если вам просто нужен компилятор: http://crosstool-ng.org/ может быть вариант – Alex

Смежные вопросы