Компиляция кросс-компилятора для компиляции ядра с использованием MinGW

Я ищу способ скомпилировать написанное любителем ядро ​​​​и микро-ОС в Windows, пока я нашел в основном совет «создать кросс-компилятор» на всех форумах и в других подобных местах. К сожалению, мне не хватает знаний, чтобы сделать это прямо сейчас, поэтому не мог бы кто-нибудь сообщить мне, как я могу скомпилировать GCC/Binutils для запуска на 64-битной установке Windows 7 с использованием MinGW? Спасибо за ваше время, Эрклинг.


person Erkling    schedule 29.04.2012    source источник
comment
Вы кросс-компилировали компилятор с кросс-компиляцией скомпилированного ядра с компилятором?   -  person    schedule 29.04.2012
comment
MingGW уже работает на 64-битных окнах. Вам не нужен кросс-компилятор для сборки ядра для архитектуры ЦП, на которой вы работаете. Так что я не уверен, что ваш вопрос имеет смысл.   -  person Mat    schedule 29.04.2012
comment
Дело в том, что я слышал, что MinGW имеет тенденцию давать PE-операцию для не-PE-файла (или что-то в этом роде), когда вы пытаетесь связать с двоичным форматом вывода, поэтому я хотел бы использовать кросс-компилятор видов. (Кажется, я ошибся в терминологии..?)   -  person Erkling    schedule 29.04.2012
comment
Если вы пытаетесь скомпилировать ядро ​​​​ОС, вам потребуется кросс-компилятор, поскольку такие вещи, как двоичный формат, будут отличаться, и вы, скорее всего, не захотите включать заголовки c для компилятора (или вы захотите использовать заголовки из ОС, на которую вы ориентируетесь).   -  person Will    schedule 29.04.2012


Ответы (1)


Компиляция gcc как кросс-компилятора должна быть довольно простой, однако я никогда не пробовал это делать в Windows.

Чтобы быть построенным как кросс-компилятор, gcc необходимо настроить с помощью --host=<host_os> и --target=<target_os, где <host_os> — это платформа, на которой будет работать компилятор (в вашем случае Windows), а <target_os> — это платформа, на которую вы ориентируетесь. Как вы говорите, это любительское ОС, вероятно, 1586-elf или что-то подобное.

http://wiki.osdev.org/GCC_Cross-Compiler содержит более подробную информацию. Попробуйте эту страницу и посмотрите, поможет ли она. Заставить этот метод работать в Windows должно быть так же просто, как установить Cygwin с GCC, а также загрузить и собрать binutils и gcc.

ИЗМЕНИТЬ

Это было решено с помощью objcopy для удаления PE-файла, скомпилированного с помощью --nostdlib. Если все, что вам нужно, это плоский двоичный файл, то это может быть вариантом для вас.

person Will    schedule 29.04.2012
comment
Привет, спасибо за ссылку. Однако я нашел очень очевидный ответ на свой вопрос: скомпилировать ядро ​​​​в формат PE, а затем удалить его с помощью objcopy. Спасибо, в любом случае! :) РЕДАКТИРОВАТЬ: О, забыл добавить это, но я также передал ему -nostdlib. Просто узнайте, что кто-то еще сталкивается с этой проблемой. :) - person Erkling; 29.04.2012
comment
Ok. Я не совсем понял из вашего вопроса, что вы хотели сделать, вот и все. Обновлен мой ответ, чтобы добавить то, что вы нашли. Если бы вы могли отметить это как решение проблемы, другие могли бы извлечь из этого пользу. - person Will; 29.04.2012
comment
Спасибо, отметил как ответ. :) - person Erkling; 30.04.2012