Компилиране на крос-компилатор за компилиране на ядро ​​с помощта на MinGW

Търся начин да компилирам ядро ​​и микро-ОС, написани от любители, на Windows, досега съм намирал предимно съвети за „изградете кръстосано компилатор“ във всички форуми и други подобни места. За съжаление ми липсват знанията да го направя точно сега, така че може ли някой да ме информира как мога да компилирам GCC/Binutils, за да стартирам на 64-битова инсталация на Windows 7 с помощта на MinGW? Благодаря за отделеното време, Ерклинг.


person Erkling    schedule 29.04.2012    source източник
comment
Компилирал ли си компилатора с кръстосано компилиране на компилираното ядро ​​с компилатора?   -  person    schedule 29.04.2012
comment
MingGW вече работи на 64-битови Windows. Нямате нужда от крос-компилатор, за да създадете ядро ​​за CPU арката, на която работите. Така че не съм сигурен, че въпросът ви има смисъл.   -  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
Добре. От въпроса ти не бях съвсем сигурен какво искаш да направиш, това е всичко. Актуализирах отговора си, за да добавя това, което намерихте. Ако можете да го маркирате като решение на проблема, тогава други могат да се възползват. - person Will; 29.04.2012
comment
Благодаря, отбелязано като отговор. :) - person Erkling; 30.04.2012