hallo,
ich hab ein problem mit dem Linker ld von MingW
Ich habe vor einer Woche dieses Tutorial gefunden: http://www.jay-code.de/scripts/htmlgenerator.php?page=ckernel&directory=tutorials
Es geht um eine art betriebsystem-kernel in C...
das kompilieren mit GCC hat wunderbar geklappt... das Assemblieren mit NASM auch... nur wenn ich jetzt die beiden dateien linken will, bekomme ich immer den fehler: undefinied reference to '___main'
um den zu umgehen, habe ich die datei kernel.c etwas verändert:
Dann tritt der fehler nicht mehr auf...
die Assembler-datei habe ich unverändert gelassen...
da ld irgendwie dass Format aout nicht mag, hab ich ne weile alles Ausprobiert, kletztendlich hat dann win32 geklappt...
Wenn ich jetzt die Beiden Kompilierten Dateien linken will, Kommt kein Fehler mehr zu Stande...
dann noch wie im tut beschrieben den Asm code, der in den protected-Mode schalten soll, dranghängt, und in Sector 2 einer Diskette kopiert + selbstgeschriebenen Bootloader in demn MBR, der den Sektor 2 ausliesst...
wenn ich jetzt aber in VMWare von diskette Boote, passiert entweder garnichts, oder es erscheint ein ganz Kurz ein Text (ich konnte nurirgendwas mit Phoenix ltd erkennen), und der PC Rebootet sofort... und dass geht die Ganze zeit so weiter...
Zuerts htte ich den Booloader im verdacht, nach verwndung eines anderen hat sich dieser Verdacht aber zerstreut...
jetzt weiss ich aber nicht, obs an dem Code liegt, der in den Protected-Mode schalten soll, oder an der Gelinkten datei...
hat da vll. Jemand ne ahnung, woran dass liegen kann?
ich hab ein problem mit dem Linker ld von MingW
Ich habe vor einer Woche dieses Tutorial gefunden: http://www.jay-code.de/scripts/htmlgenerator.php?page=ckernel&directory=tutorials
Es geht um eine art betriebsystem-kernel in C...
das kompilieren mit GCC hat wunderbar geklappt... das Assemblieren mit NASM auch... nur wenn ich jetzt die beiden dateien linken will, bekomme ich immer den fehler: undefinied reference to '___main'
um den zu umgehen, habe ich die datei kernel.c etwas verändert:
Code:
int main()
{
char *Text = "Welcome to Protected Mode";
char *VideoMem = (char*)0xB8000;
while(*Text)
{
*VideoMem = *Text;
*VideoMem++;
*VideoMem = 7;
*VideoMem++;
*Text++;
}
return(0);
}
int __main()
{
main();
}
Dann tritt der fehler nicht mehr auf...
die Assembler-datei habe ich unverändert gelassen...
Code:
[Bits 32]
extern _main
global start
start:
call _main
stop:
jmp stop
da ld irgendwie dass Format aout nicht mag, hab ich ne weile alles Ausprobiert, kletztendlich hat dann win32 geklappt...
Wenn ich jetzt die Beiden Kompilierten Dateien linken will, Kommt kein Fehler mehr zu Stande...
dann noch wie im tut beschrieben den Asm code, der in den protected-Mode schalten soll, dranghängt, und in Sector 2 einer Diskette kopiert + selbstgeschriebenen Bootloader in demn MBR, der den Sektor 2 ausliesst...
wenn ich jetzt aber in VMWare von diskette Boote, passiert entweder garnichts, oder es erscheint ein ganz Kurz ein Text (ich konnte nurirgendwas mit Phoenix ltd erkennen), und der PC Rebootet sofort... und dass geht die Ganze zeit so weiter...
Zuerts htte ich den Booloader im verdacht, nach verwndung eines anderen hat sich dieser Verdacht aber zerstreut...
jetzt weiss ich aber nicht, obs an dem Code liegt, der in den Protected-Mode schalten soll, oder an der Gelinkten datei...
hat da vll. Jemand ne ahnung, woran dass liegen kann?