gcc может кросс-компилировать для разных процессоров? - PullRequest
13 голосов
/ 24 ноября 2011

Возможно ли, что gcc, установленный на fedora 16, будет кросс-компилировать для другого процессора, скажем, SPARC? У меня есть определенное понимание, мне нужен эксперт, чтобы поправить меня, если я ошибаюсь. Различные операционные системы различаются по системным вызовам, которые они используют для доступа к ядру, или полностью по ядру, которое они используют. ЭТО ПРАВИЛЬНО? разные ядра понимают разные системные вызовы для доступа к базовому оборудованию. двоичные файлы, исполняемые файлы или программы - это всего лишь набор системных вызовов. поэтому каждая ОС имеет свой собственный исполняемый файл. исполняемый файл, предназначенный для запуска в Windows, но не в Linux. путем кросс-компиляции исходного кода любого исполняемого файла windown мы можем создать исполняемый файл для других ОС. Слово ПЛАТФОРМА означает операционную систему. POSIX - это определенные стандарты проектирования для UNIX-подобных ОС. мы обычно кросс-компилируем для разных ОС. НО мы можем кросс-компиляцию для другого оборудования тоже? например, в случае микроконтроллера, у которого нет ОС?

Ответы [ 2 ]

11 голосов
/ 24 ноября 2011

Нет. Вы не можете использовать нативный gcc (x86) для компиляции программных файлов для другой архитектуры. Для этого вам необходим кросс-компилятор-gcc, специфичный для этой архитектуры процессора.

Ваше понимание системных вызовов для ОС правильное. Каждая ОС имеет свой собственный набор системных вызовов, который используется библиотекой. Эти библиотеки в конце будут переведены на машинный язык для процессора.

Каждая архитектура процессора имеет свой собственный набор команд, известный как Архитектура набора команд (ISA). Поэтому, когда программа, написанная на языке высокого уровня (например, C), компилируется, она должна быть преобразована в машинный язык из ISA. Эта работа выполняется компилятором (gcc). Компилятор будет характерен только для одной архитектуры процессора. Например, gcc для процессора x86. Поэтому, если вам нужен компилятор для другого процессора на вашем компьютере с архитектурой x86, вы должны использовать кросс-компилятор этого процессора.

2 голосов
/ 24 ноября 2011

Вы должны были бы построить такую ​​версию.Это часть процесса переноса gcc на новую платформу.Вы создаете версию для кросс-компиляции, затем кросс-компилируете эту версию, затем тестируете эту версию на новой платформе, отлаживаете, промываете и повторяете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...