FreeBasic: Compiler

Aus Wikibooks
Zur Navigation springen Zur Suche springen


Die Kommandozeile[Bearbeiten]

Hilfsseite des FreeBASIC Compilers v0.20b.

Da diese Seite nur sporadisch aktualisiert wird, finden sich akutellere Informationen im FreeBASIC-Portal

Der Compiler wird in der Kommandozeile folgendermaßen aufgerufen:

Aufruf: fbc [option] [option] ... Eingabedatei [Eingabedatei] [Eingabedatei]
  • 'Option' entspricht dabei einer Liste an Parametern, die unten aufgeführt sind.
  • 'Eingabeliste' ist die Liste der Dateien, die beim Compilern eingebunden werden sollen.

Der Compiler entscheidet abhängig von der Erweiterung, wie eine Datei behandelt werden soll:

*.o Objektdatei (einzelnes vorkompiliertes Modul)
*.a Statische Sammlung von vorkompilierten SUBs/FUNCTIONs
*.bas Zu kompilierende Programmdatei
*.rc Ressourcen-Beschreibung (Dialoge, Menüs, Icons, Tastaturkürzel)
*.res Kompilierte Ressourcendatei

Die folgenden Parameter können an den FreeBASIC Compiler übergeben werden:[Bearbeiten]

Erzeugung von Bibliotheken mit privaten/öffentlichen Subs/Funktionen.[Bearbeiten]

-export [Name] Der Name einer Sub/Funktion wird explizit für andere Module öffentlich gemacht.

Ein anderes Modul kann mit Hilfe der Declare Sub/Function Anweisung solche öffentlich deklarierten Subs/Funktionen benutzen.

-dll siehe -dylib
-dylib Erzeugt eine Sammlung von kompilierten öffentlichen Subs/Funktionen, die zum Programmstart automatisch dem Programm an festen Adressen hinzugefügt werden. Auf diese Weise erzeugte Module müssen dem fertigen Programm separat mitgegeben werden. Die Dateien haben unter Windows die Endung (*.dll) und unter Linux (*.so.). Dies nennt man dynamisches Linken.
-lib Es wird eine Sammlung von Subs/Funktionen vorkompiliert, die aber nicht wie bei den Optionen -dll und -dylib einem Programm separat mitgegeben, sondern direkt in das fertige Programm eingefügt wird. Dies nennt man daher statisches Linken.
-a [Name] Eine vorkompilierte Objektdatei ohne feste Adressen mit der Endung (*.o) wird der zu erzeugenden Datei hinzugefügt.
-c Es werden Sammlungen von Subs/Funktionen vorkompiliert, aber nicht zu einem ausführbaren Programm verbunden.
-l [Name] Eine fertige vorkompilierte statische Sammlung von Subs/Funktionen, den sogenannten Librarys mit dem Namen lib [Name].a wird statisch dem Programm hinzugefügt. Die ausführbare Programmdatei und das Mitgeben von Dlls (*.dll) oder Shared-Librarys (*.so) kann entfallen.

Behandlung von Programmdateien (*.bas und *.bi)[Bearbeiten]

-b [Name] Eine Programmdatei mit der Endung (*.bas) wird dem Kompiliervorgang hinzugefügt.

So lassen sich mehrere Dateien hintereinander kompilieren.

Bedingtes Kompilieren und Preprozessor[Bearbeiten]

-d [Name=Wert] Für bedingtes Kompilieren kann man einen Wert definieren, z.B.DEBUG=1, der dann mit #IF oder #IFDEF, #IFNDEF abgefragt werden kann.

Fehlerbehandlung[Bearbeiten]

-e Einfache Fehlerunterstützung einschalten. Es werden Fehlererkennungs-Funktionen in das fertige Programm eingefügt, die zum Programmabbruch führen können, wenn ein schwerer Fehler auftritt.
-ex Erweiterte Fehlerunterstützung einschalten, wie die Option -e, aber mit der Möglichkeit, eigene Fehlerbehandlung zu implementieren. Mit Hilfe der RESUME-Anweisung kann man auf einen Fehler reagieren, und das Programm muss nicht zwangsläufig beendet werden.
-exx Wie -e und -ex, aber mit zusätzlicher Prüfung auf gültige Arrray-Grenzen und korrekte Verwendung von Zeigeradressen.
-g Informationen zur Fehlersuche werden in das Programm integriert. Aufgrund der zusätzlichen Informationen ist es möglich, zur Laufzeit das Programm Schritt für Schritt auf seine Funktionsweise hin zu überprüfen. Das schrittweise Ausführen von Programmen wird mit Hilfe von Debuggerprogrammen realisiert, FreeBASIC liegt der GNU-Debugger gdb bzw. gdb.exe bei. Es gibt aber auch frei erhältliche grafische Oberflächen, die das Debuggen erheblich vereinfachen und die Debug-Information visuell aufbereiten.
-noerrline Die Zeilennummer, in der ein Fehler auftrat, wird nicht berechnet.

Behandlung von Programmdateien.[Bearbeiten]

-i [Name] Gibt an, in welchen Verzeichnissen der Compiler nach Include-Dateien mit der Endung (*.bi) suchen soll.
-p [Name] Gibt an, in welchen Verzeichnissen der Compiler nach statischen Subs/Funktionen-Sammlungen mit der Endung (*.a) suchen soll. Siehe auch Option -lib.
-m [Name] Die Datei [Name].bas wird als Startdatei angenommen. Sie enthält den Programmstart Main. Als Standard wird ohne diese Option die erste angegebene Datei als Startdatei angesehen.
-o [Name] Unabhängig vom Namen der Programmdateien mit der Endung (*.bas) wird ein Programm mit dem [Namen] bzw. [Namen.exe] erzeugt.
-profile Das Programm wird nach Beendigung die Datei profile.txt erstellen, die alle Timing-Ergebnisse für Funktionsaufrufe enthält.

Diese Technik nennt man auch Profiling.

Programmerstellung[Bearbeiten]

-arch [Typ] Setzt die Mindestanforderung an den Prozessor(CPU), für den das Programm erzeugt werden soll. Als Standardwert wird für einen Prozessor der 486-Klasse kompiliert, 386 wird unterstützt.

Ob die anderen Werte wie 586, 686, PI, PII, MMX, SSE, 3DNOW, AMD, usw. unterstützt werden, kann im Moment nicht gesagt werden.

-r Während des Kompilierens werden Assemblerdateien mit der Endung (*.asm) erzeugt und am Ende wieder gelöscht. Mit der Option -r [retain=behalten] werden die Assemblerdateien nicht gelöscht und können mit einem Editor eingesehen werden. Dies kann unter anderem dann nützlich sein, wenn man mit der Option -g Debug-Informationen erzeugt und sehen will, welche Programmanweisungen der Präprozessor generiert hat. Diese werden in den Assembler-Kommentaren abgelegt.
-s [gui / console] Gibt an, ob ein Programm im Fenster oder in der Konsole ausgeführt werden soll.
-t [Wert] Gibt die Größe des verwendeten Stackspeichers in KB (1024 Byte-Einheiten) an.

Ohne diese Option wird eine Standardgröße von 1MB benutzt und sollte in der Regel auch völlig ausreichen. Ausnahmen können umfangreiche Programme sein, die reichlich Gebrauch von rekursiven Funktionsaufrufen machen, wie z.B. Raytracer oder Fraktalgenerator.

-target [Name] Mit [Name] wird das Zielbetriebssystem angegeben, für das ein Programm erzeugt werden soll. Diese Option steht nur unter Windows zur Verfügung und als [Name] sind daher Dos, Linux, und XBox erlaubt. (Um auf Windows für andere Betriebssysteme kompilieren zu können, müssen weitere Voraussetzungen erfüllt sein.)
-lang [Name] Mit [Name] kann man angeben, in welchem Kompabilitätsmodus der Kompiler arbeiten soll. Standard ist "fb", es kann "deprecated" für 0.16-Syntax und "qb" für QBASIC-Syntax angegeben werden.

Informationen[Bearbeiten]

-v Mit diese Option gibt der Compiler erweiterte Informationen während des Kompilierens auf der Konsole aus.
-version Zeigt die aktuelle Programmversion des Compilers.
-w [Wert] Setze minimale Warnungstufe (Vermutlich 1-3?)

Unterschiede zu QuickBasic[Bearbeiten]

Compiler, erstellt 32-Bit-Anwendungen (auch für DOS) anstelle von 16-Bit-Anwendungen oder nur Interpretation. Der Compiler ist für mehrere Plattformen verfügbar wie z.B. Linux, DOS und Windows. Auch auf der X-Box sind spezielle FB-Programme ausführbar.

FreeBASIC ist 100% OpenSource und verwendet ausschließlich OpenSource-Software.