Compilieren/Linken von PrettyOS



  • ich mache optionale Sachen sowieso immer, also von da her.. und ich vermute mal, dass viele, die sich in diesem Forum rumtreiben den NASM sowieso installiert haben 🙄


  • Mod

    Hier die "Mitschrift" eines Einsteigenden, die er freundlicherweise im IRC hinterlassen hat:

    pretty os quick guide (für Windoes XP soeben getestet)
    
    nasm runterladen von http://www.nasm.us/pub/nasm/releasebuilds/2.08.01/win32/nasm-2.08.01-win32.zip
    auspacken nach c:\nasm
    
    crosstools runterladen von http://jidder.de/lost/files/crosstools-complete.rar
    auspacken nach c:\crosstools
    
    prettyos runterladen von http://prettyos.svn.sourceforge.net/viewvc/prettyos.tar.gz?view=tar
    auspacken nach zum Beispiel d:\src\prettyos
    
    qemu runterladen von http://download.tyndur.org/temp/qemu-ehci.tgz
    auspacken nach c:\qemu
    
    die zlib1.dll irgendwie finden
    und nach c:\quemu kopieren. 
    Zum Beispiel aus http://sourceforge.net/projects/gnuwin32/files/zlib/1.2.3/zlib-1.2.3-bin.zip/download
    
    neues Konsolenfenster aufmachen und nach d:\src\prettyos gehen
    Pfad anpassen
    path=c:\nasm;%path%
    path=c:\crosstools\bin;%path%
    
    Image bauen mit 
    build.bat
    
    Image testen mit 
    c:\qemu\qemu.exe -soundhw pcspk -fda FloppyImage.img -boot a -localtime
    


  • Auch wenn man Programme normalerweise nicht nach C:\ sondern eher C:\Programme legt 😉
    Und dort wird nicht erwähnt, das man die Pfade einstellen muss.

    Cuervo: Aber solange NASM in Deiner Anleitung als "optional" gilt, gilt für mich Deine Anleitung als obsolet 😉



  • Moin,

    ich verfolge Pretty OS jetzt schon eine ganze Zeit - im Prinzip seit den Tutorial 1 - und seit dem VGA Support hat sich mein Interesse gesterkt.

    Nun wollte ich dann doch auch mal mein eigenes Image erstellen und hab mir die aktuellste Rev. vom SVN heruntergeladen. (648)

    Doch beim ausführen der build.bat schmeißt mir Make nur ein Error -1 aus. 😕

    Ich wäre um eine kleine Hilfestellung beim erstellen sehr dankbar. :c

    http://codepad.org/jNlyXbIE (editiert durch ehenkes)



  • Sieht aus, als würdest du NASM 2.09rc4 nehmen.
    diese Version scheint fehlerhaft zu sein.

    Bitte entweder 2.09rc3 oder 2.08 nehmen, dann sollte es gehen.


  • Mod



  • Danke, es lag an der neusten NASM Version. (Ich hatte bereits letzte Woche auf r4 geupdated).
    Danke sehr.


  • Mod

    oldsqldma: wenn du lust hast, mach doch mit als entwickler bei svga 🙂



  • Ich habe jetzt auch mal euer Tutorial gefunden und ein bisschen rumprobiert. Sobald ich aber den ckernel einbinden will, wofür ich natürich den Linker benutzen muss, kommt immer bei ld.exe dieser Fehler:
    kernel.o: file not recognized: File format not recognized

    In der .bat steht das hier :

    nasm -O32 -f bin boot.asm -o boot.bin
    nasm -O32 -f aout kernel.asm -o kernel.o
    gcc -c ckernel.c -o ckernel.o
    ld -T kernel.ld ckernel.o kernel.o -o ckernel.bin
    copy /b boot.bin + ckernel.bin MyOS.bin
    pause>nul

    Ich muss übrigens die gcc.exe und ld.exe aus dem Dev-C++ nehmen, da diese 64-bit kompatibel sind. Macht das einen Unterschied?
    Ich habe auch die NASM Version 2.08 genommen wie MrX sagte.
    mfG TheCrip


  • Mod

    aout: da benötigst du den alten Linker aus dem DJGPP, der neue kann das nicht mehr, benötigt scharfe Trennung von 16 u. 32 Bit Code. Probiers mal mit dem DJGPP.



  • Die ist aber leider nicht 64-bit fähig, bringt mir gar nix


  • Mod

    dann musst du weg von "aout" (das war schön 16+32 bit fähig) zu den Nachfolgern. Im modernen PrettyOS verwenden wir natürlich kein aout mehr.



  • Wieso muss dein Compieler denn 64 Bit fähig sein, und vor allem was meinst du damit? Die 32 Bit Version kann man problemlos auf einem 64 Bit System ausführen, und es wird für das Tutorial und PrettyOS eh nur 32 Bit Code generiert.



  • Ich habe nicht den Eindruck, das er versucht, PrettyOS zu kompilieren, denn dafür bräuchte er kein eigenes makefile^^


  • Mod

    aout mit dem neuen Linker geht nicht mehr, wie bereits ausgeführt. ^^



  • Ja ich versuche das Tutorial zu kompilieren. Und ich habe ein 64-bit OS, deshalb klappt die ld.exe und gcc.exe vom djgpp nicht, weil das noch alte Versionen sind.
    Jetzt muss ich die beiden vom dev-Cpp nehmen, diese funktionieren. Nur das die ld.exe das aout Format nicht erkennt.
    Welches Format müsste ich denn da nehmen, hab schon einige versucht...


  • Mod

    Wir haben erst später 16- und 32-Bit-Code sauber getrennt, da dies nur in aout und mit dem alten Linker möglich war. coff ist das Nachfolger-Format: http://en.wikipedia.org/wiki/COFF

    Hier wurde die Abwärtskompatibilität beim ld gebrochen, wie heute beim 64-bit-OS, das die 16-bit-Anwendungen knallhart im Regen stehen lässt.

    Schau dir den aktuellen Code in PrettyOS an.
    http://prettyos.svn.sourceforge.net/viewvc/prettyos.tar.gz?view=tar


  • Mod

    Cuervo schrieb:

    Diesers Programm funktioniert mit den aktuellen PrettyOS Versionen nicht mehr, es war nur ale Test gedacht und ist hiermit als "obsolete" und unbrauchbar markiert.

    Cuervo schrieb:

    So, ich stelle nochmal den aktuellen Code und eine EXE-Datei rein, Code ist in BlitzPlus geschrieben (http://www.blitzbasic.com).
    Programm läuft auf EIGENE GEFAHR.

    Download: LINK ENTFERNT
    Dieses Archiv bitte in den Source Ordner exrtrahieren, so dass die build.exe darin liegt.

    Global win
    AppTitle "Compiler"
    win=CreateWindow("Kompilieren...",100,100,640,480,0,1+32)
    Global e,es,ed
    Global tarea=CreateTextArea(10,10,620,460,win)
    SetTextAreaColor tarea,0,0,0,1
    SetTextAreaColor tarea,0,255,0,0
    Global font=LoadFont("Arial",30)
    SetTextAreaFont tarea,font
    
    Global d$=CurrentDir()
    
    ChangeDir "_stage1_bootloader"
    RunCommand "Build.bat"
    ChangeDir d$
    ChangeDir "_stage2_bootloader"
    RunCommand "Build.bat"
    ChangeDir d$
    ChangeDir "user"
    ChangeDir "user_program_c"
    CopyFile d$+"_nasm\nasmw.exe","nasmw.exe"
    RunCommand d$+"_mingw32-make\mingw32-make.exe --makefile=Windows_makefile"
    ChangeDir d$+"user"
    CopyFile "user_program_c\program.elf","init_rd_img\program.elf"
    ChangeDir "init_rd_img"
    RunCommand d$+"_mingw32-make\mingw32-make.exe --makefile=Windows_makefile"
    ChangeDir d$
    ChangeDir "kernel"
    RunCommand d$+"_mingw32-make\mingw32-make.exe --makefile=Windows_makefile"
    ChangeDir d$
    
    Notify "BUILDVORGANG ABGESCHLOSSEN!",1
    AddTextAreaText tarea,Chr(13)+Chr(10)+Chr(13)+Chr(10)+"FERTIG!!!"
    Repeat
    	e=WaitEvent()
    	If e=$803 Then
    		Exit
    	EndIf
    	es=EventSource()
    	ed=EventData()
    	
    Forever
    
    FreeGadget win
    End
    
    Function RunCommand(s$)
    	Local p=CreateProcess(s$)
    	If p=0 Then
    		AddTextAreaText tarea,"BEFEHL "+s$+" nicht gefunden!"+Chr(13)+Chr(10)
    		Return 0
    	EndIf
    	
    	While Not Eof(p)
    		AddTextAreaText tarea,ReadLine(p)+Chr(13)+Chr(10)
    		WaitEvent(1)
    	Wend
    	
    	
    End Function
    

Anmelden zum Antworten