 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 17.07.2009, 16:18 Titel: |
|
|
ja .. es liegt am "-melf.."
Ich arbeite auf Linux, und besitzte daher auch FBC für Linux und einen Linker für Linux.
Aber, um erstmal etwas klarheit hir herein zu bringen.
FBC ist ein Kompiler. Er setzt den Basic-Quellcode in Assambler Quellcode oder in Objektdatein, oder direkt in eien Binary Datei um.
Da der FreeBASIC compiler jedoch Betriebssystem spezifisch arbeitet, gibt es unterschiedliche Compiler für unterschiedliche betriebssysteme. Das liegt daran, weil ein Quellcode nicht immer für jedes Betriebssystem funktion ist, und bestimmte Befehle auf das Betrieibssystem angepasst, kompiliert werden muss.
Darum gibt es Compiler für Linux und Windows, bzw DOS usw.
Da du jedoch kein Betriebssystem besitzt, musst du dem Compiler mitteilen, das du keine Binary für ein Betriebssystem erzeugen willst, sondern eine Objektdatei ".o"
Diese Objektdatei musst du jetzt, zu einer ausführbaren Datei umwandeln. Binary.
Das Macht der Linker. Er "baut" aus der objektdatei eien Ausführbare Datei.
Dabei werden bestimmte befehle mit DLL's oder API-Aufrufe des Betriebssystems verbunden.
Als beispiel: "Print". Der befehl ist eigentlich kein direkter zugriff auf den Speicher der Grafikkarte, sondern auf eine API des Betriebssystems. rufst du den Befehl auf, wird eigentlich eien Funktion von Windows aufgerufen und den auszugebendem Text übermittelt.
Das Betreibssystem wiederum führt dann den eigentichen Grafischen teil aus, und zeigt dir den Text an.
Da du jedoch kein Betriebssystem hast, musst du das anders machen.
Du erzeugst eine reine objektdatei (FBC .... -o) . Diese muss anschliessend "gelinkt" (ld ....) werden. Dabei musst du natürlich angeben, welches Dateiformat die ausführbare Datei haben soll (elf = linux) , welche anderen Objektdatein mit eingebaut werden sollen, usw.
Unter windows könnte man das auch machen, ist aber nciht mein fachgebiet, und wie man das für Windows machst, weis ich auch nicht wirklich. Ob das dann auch funktioniert, was du baust, kann ich auch nciht sagen.
Unter linux wird es jedoch folgendermassen gemacht.
Du kannst z.B. einen Emulator ... z.B. VMWare, oder was ähnliches nutzen, um von Windows aus ein Linux zu booten, und dort dann FreeBasic installieren und einen Linker für linux.
1. Zuerst schreibst du mal deinen Quellcode unter linux oder windows
2. Du erzeugst eien Objektdatei .o unter linux oder windows (fbc .... -o)
3. Auf Linux (z.B. via VMWare) "linkst" du nun die objektdatein zu einer ausführbaren Datei zusammen. (ld ....). Diese Binary wird mit dem Linux-Linker zu einer "ELF" datei umgewandelt. Diese ELF datei ist für Linux typsisch.
4. Du erzeugst ein Image das als virtuelle Festplatte dient. Dieses Image (bzw. die virtuelle Festplatte) erhält ein Dateisystem (EXT2 / EXT3 / FAT .. ich tendiere zu EXTx) einen Bootloader (grup ist hier geeigent).
5. In das Image kopierst du nun die erzeugte Binar-Datei (die datei die vom Linker erzeugt wurde)
6. Du startest QEMU oder einen anderen dir beliebten Emulator, gibst dein Image als "festplatte" an, und startest den Emulator.
Daraufhin simuliert QEMU einen Computer, dessen Festplatte das Image ist.
Da auf dem Image GRUP ist, suchet dieser nun nach deinem Kernel (bzw. der binärdatei)
Findet er ihn, startet er diesen. Natürlich musst du GRUP mitteilen, wo die binary liegt. Das kannst du in der konfugurationsdatei von GRUP angeben.
Nachdem dein Kernel geladen wurde, wird dieser ausgeführt. udn du solltest (wenn du mein beispiel oben nutzt) ein paar zeilen Text ausgegeben werden.
Zum beenden der Simulation brauchst du nur das von QEMU erzeugtes Konsolenfenster schliessen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 17.07.2009, 22:30 Titel: Danke für die tollen Infos :) |
|
|
hi puppetmaster und alle anderen, klasse und vielen Dank für die vielen Infos... hat mir geholfen, das alles besser zu verstehen, auch schade, dass dieses Kernel beispiel von dir leider (oder evtl.) nur unter Linux funktioniert. Ich versuche jedoch mehr darüber zu erfahren, ob es nicht auch unter Windows verlinkt werden kann. Ich kenne mich leider überhaupt nicht mit Linux aus. Aber diese ganze Arbeit mit den vielen Beispielen von dir finde ich einfach klasse! Kompliment. Da steckt bestimmt ne Menge Arbeit hinter. Wenn ich mehr weiß, ob das Linken unter Windows geht, melde ich mich. Ich wühle weiter, bis ich eine Lösung habe. So mache ich das immer, haha
schönen Abend noch, sommerliche Grüße und mir gefällt Freebasic immer besser... Habe u.a. im engl. Forum gelesen, dass dort nicht kontinuierlich an FB weiterdran gearbeitet wird, weil Manpower fehlt bzw. zwei, drei sehr wichtige Leute aus- bzw. umgestiegen sind. Das finde ich ein wenig blöde, denn eine Programmiersprache lebt auch von der Weiterentwicklung, oder ? Würde mich freuen, wenn es zu regelmäßigen Updates kommt.
bis baldo, grüße nochmals, Löwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|