Autor Thema: Cross Compiler  (Gelesen 5243 mal)

Arktus

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« am: 04. November 2008, 09:54 »
So, ich habe vieles probier abter nicht brauchbares ist bei rausgekommen.

Ich wollte mir einen CrossCompiler basteln der mit den Aktuelen Paketen versorgt ist.

Ich versuche schon seit einer Woche mein TuT OS zu Compilieren aber es haut einfach nicht hin, es kommen immer wieder fehler Meldungen raus. Könnte mir einer von euch eine Genau anleitung geben wie ich den den zusammen bauen soll ? Die hier in der Wiki Klappt net da kommen bei mir immer nur Fehlermeldungen raus.

OS: Vista


Danke im Voraus. MFG Arktus

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 04. November 2008, 17:38 »
Was für Fehlermeldungen?
Brauchst du wirklich einen Cross Compiler? Sowohl MinGW als auch Cygwin sind mit etwas Gebastel gut zu benutzen.
Dieser Text wird unter jedem Beitrag angezeigt.

Arktus

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 04. November 2008, 19:41 »
Hat sich jetzt erledigt, habe mir Ubuntu Image für den VMWare Player besorgt und code fürs erste da, habe nun auch was hinbekommen.

Der Kernel aus dem Tut http://lowlevel.brainsware.org/wiki/index.php/C-Kernel_mit_Grub

kernel.asm
global loader ; loader für Linker sichtbar machen
extern main   ; main-Funktion des C-Kernels

FLAGS    equ 0
MAGIC    equ 0x1BADB002       ; Magicnumber - Erkennungsmerkmal für Grub
CHECKSUM equ -(MAGIC + FLAGS) ; Checksum

section .text
align 4
MultiBootHeader:
  dd MAGIC       ; Magic number
  dd FLAGS       ; Flags
  dd CHECKSUM    ; Checksum

loader:
  mov esp,0x200000 ; Stack an die 2MB-Grenze platzieren
  push eax         ; Multiboot Magicnumber auf den Stack legen
  push ebx         ; Adresse der Multiboot-Structure auf den Stack legen
  call main        ; main-Funktion des C-Kernels aufrufen

  cli ; falls der Kernel bis hier her kommt, CPU anhalten
  hlt

kernel.c
int main() {
  // Pointer zum Videospeicher
  char *video = (char*)0xB8000;
  // String zum Ausgeben
  char *hello = "Willkommen";

  // Zuerst den Speicher leeren
  for(video+=4000; video !=(char*)0xB8000 ;video--)
     *video=0;

  // String ausgeben
  while (*hello) {
    *video = *hello;
    video++;
    *video = 0x07;
    video++;
    hello++;
  }

  // jetzt wo wir schon im Kernel drin sind, wollen wir auch nicht mehr raus ;)
  while (1);
  return 0;
}

Und es leuft ^^

Dan habe ich den Kernel aus dem Tut http://lowlevel.brainsware.org/wiki/index.php/C-Kernel_starten

Wenn ich den jedoch erstelle kommt bei mir in GRUB der Fehler das die kein gültiges format wäre.

Kann mir jmd posten wie und wo ich in eine der beiden ASM Files die Magicnumber und das andere da poste muss damit er ihn als Kernel erkennt da ich glaube das es daran liegt und ich gerne mit dem Code aus diesem Tut weiterarbeiten möchte.

Danke für die Antworten im voraus.

PS: Ich glaube auch das sich mingw gut als cross compiler eignet das ich ihn ja für c und c++ verwende aber ich weiss net wie man den umbaut da ich soetwas noch nie gemacht habe und google mir nur halbe sache auspuckt wo alles veraltet oder nur zum teil erklärt ist.

MfG Arktus

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 04. November 2008, 19:54 »
Dan habe ich den Kernel aus dem Tut http://lowlevel.brainsware.org/wiki/index.php/C-Kernel_starten

Wenn ich den jedoch erstelle kommt bei mir in GRUB der Fehler das die kein gültiges format wäre.
Ja, der ist auch nicht für GRUB, sondern für einen eigenen Bootloader gedacht. Vergiß dieses Tut einfach: Du brauchst dir diese Umstände in den Assemblerdateien nicht machen, das macht alles GRUB für dich. Letztendlich landen ja sowieso beide Beispiele in einem C-Kernel, der Hello World ausgibt - nur ist das mit GRUB etwas kürzer.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Arktus

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 04. November 2008, 20:17 »
Achso, GRUB lädt für mich allso den PM und ich muss dan nur noch die GDT basteln ?

Was brauche ich alles für den PM damit ich anfangen kann mir trieber für die Tastatur zu schreiben
« Letzte Änderung: 04. November 2008, 20:21 von Arktus »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 04. November 2008, 20:30 »
Schau dir mal den Artikel OS-Dev für Einsteiger im Wiki an. Du dürftest im Moment relativ genau in der Mitte des Artikels stehen.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen