2009-09-10 2 views
0

У меня есть aproblem с моим портом mips .... Всякий раз, когда я пытаюсь скомпилировать C-программу с выражением printf, она дает предупреждение о том, что она не распознается, а в сгенерированном файле сборки нет .asciiz директива ... Строка не существует .... может кто-нибудь, пожалуйста, скажите мне, почему?Проблема с установкой mips

А также то, что разница между построения голый металлический крест компилятор и кросс-инструментарий

Я новичок в мире кросс-компиляторы .... :-)

+0

Это поможет, если вы можете опубликовать пример минимального кода, который воспроизводит проблему. Я предполагаю, что у вас нет файла заголовка, который определяет printf. (Также, в зависимости от вашей цели, printf - довольно дорогостоящая процедура для использования во встроенной среде. Возможно, вы захотите придерживаться puts()) –

ответ

1

Убедитесь, что вы есть

#include <stdio.h> 

в верхней части ваших исходных файлов C, которые используют printf.

0

А также то, что разница между построения голый металлический крест компилятор и кросс-инструментарий

кросс-компилятор (который ССАГПЗ) является частью поперечного набора инструментов.

Кроме НКУ, нам еще нужно

  • Binutils (для целевой кроссплатформенного)
  • ядро ​​(из целевой кроссплатформенного)
  • Glibc (для целевой кроссплатформенного)

ЗАКАНЧИВАТЬ this book для подробно.

+0

, так что вы говорите, что для инструментария кросс-компилятора потребуются все эти пакеты, но голый металлический кросс-компилятор не будет? .. Также некоторые, где на обсуждениях gcc я читал, что вместо glibc некоторые люди говорят, что мы используем uclibc или newlib ... Будет ли это на самом деле иметь значение ??? – 2009-09-10 17:47:18

0

Как вы компилируете? Eclipse или командной строки? У меня была аналогичная проблема с использованием Eclipse и выяснилось, что семейство процессоров было «пустым» в Eclipse. Это привело к тому, что ассемблер не понимал выход компилятора, аналогично описанным вами симптомам.

Cross Составители не все, что отличается от обычных компиляторов:

  • выводимых двоичным может быть несовместимы с сборкой компьютера (может быть для нескольких платформ)
  • компилятора может быть в состоянии коды выходной много различной платформы

В случае GCC он может быть загружен одним или несколькими семействами процессоров. GCC, который поставляется с Cygwin, довольно ограничен (i686); в Linux у вас будет больше выбора. Я предлагаю вам задать другой вопрос о том, как настроить кросс-компиляцию, вам нужна помощь.

+0

Я думаю, что я построил кросс-компилятор, но я не уверен .... Я установил binutils 2.19, а затем настроил gcc 4.3.1 для mips-linux-gnu в качестве цели ... затем использовал команду для сборки c-файла и создания исполняемого файла .. но я не уверен, что если бы я сделал это для голого металлического кросс-компилятора. вне? – 2009-09-10 17:50:59

+0

также я забыл добавить, несмотря на использование опции -o, я до сих пор не создал никакого файла? Я не могу понять, почему .. – 2009-09-10 18:18:55

+0

Я перечитал вашу проблему, и если это связано только с printf, я сомневаюсь, что это действительно проблема (кросс-компилятор). Можете ли вы включить предупреждение? Вы включили нужный файл? Нет #defines active on printf? – Adriaan

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