[[Vorlage(Getestet, jammy, focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Programme_starten:Programme starten] [:Packprogramme: Archive entpacken] [:Paketinstallation_DEB: Ein einzelnes Paket manuell installieren] [:Editor: Texteditor verwenden] }}} [[Inhaltsverzeichnis(2)]] [https://www.lazarus-ide.org/ Lazarus] {en} ist eine visuelle [:Entwicklungsumgebungen:Entwicklungsumgebung] für die [:Programmiersprache:] Pascal und stellt eine freie Alternative zu [wikipedia:Embarcadero_Delphi:Delphi] für Windows und dem eingestellten Linux-Port [wikipedia:Kylix_(Entwicklungsumgebung):Kylix] dar. Unterstützt wird der plattformunabhängige [:Free_Pascal:Free Pascal]-Compiler und mehrere populäre [:GUI-Toolkits:] wie GTK2 und QT. Zudem stehen eine ganze Reihe vorgefertigter Komponenten z.B. für Datenbankverbindungen zur Verfügung. = Installation = == Offizielle Paketquellen == Lazarus liegt in den offiziellen Ubuntu-Paketquellen. Man installiert das Paket [1] {{{#!vorlage Paketinstallation lazarus, universe }}} Dabei wird auch [:Free_Pascal:Free Pascal] als Abhängigkeit installiert. [[Bild(./laz-1.png, 200, right)]] In den offiziellen Paketquellen liegt allerdings nur die veraltete Version 2.2.0. Um die aktuelle Version (28.02.2024: Lazarus 3.2) zu erhalten, muss man von der Projektseite (siehe unten) die drei DEB-Pakete downloaden und installieren. Nach der Installation ist Lazarus unter "''Anwendungen''" zu finden. = Benutzung = Lazarus kann nun als `lazarus` bzw. `lazarus-ide` gestartet werden. [2] [[Bild(./Lazarus-HalloWelt-indiziert256.png, 200, right)]] == Hallo Welt == Ein Hallo-Welt Testprogramm mit grafischer Oberfläche lässt sich dank der visuellen Programmierumgebung sehr schnell erstellen. Schon beim Start von Lazarus steht ein Basisgrundgerüst für ein Programm zur Verfügung, dass sich auch schon kompilieren lässt. Es handelt sich jedoch um ein leeres Programm. Mit [[Vorlage(Tasten, F12)]] lässt sich zwischen Quelltexteditor und einer Entwurfsansicht der grafischen Oberfläche hin und her wechseln. Um dem Beispielprogramm einen Knopf hinzuzufügen wählt man aus der Menüleiste ''"Standard"'' die Schaltfläche [[Bild(./TButton.png)]] an und platziert ihn mit einem [[Vorlage(Tasten, lmt)]]-Klick in der Entwurfsansicht. Daraufhin klickt man doppelt auf den neu angelegten Knopf und landet im Quelltexteditor. Der Cursor befindet sich genau innerhalb einer neu angelegten Funktion. Man ergänzt noch `ShowMessage ('Hallo Welt')`, um eine einfache Nachrichtenbox zu erhalten, die auf Knopfdruck erscheint. Der Teilabschnitt des Quelltextes soll im Endeffekt so aussehen: {{{#!code pascal procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage ('Hallo Welt'); end; }}} Nun drückt man [[Vorlage(Tasten, F9)]] oder den grünen Pfeil, um das Programm zu kompilieren und auszuführen. Um die Entwicklungsumgebungen noch ein bisschen weiter zu erkunden, kann man sein Programm erst einmal abspeichern und noch weiter modifizieren. Um die grafische Oberfläche noch weiter anzupassen, kann man den Objektinspektor verwenden. Im Objektinspektor auf der rechten Seite sind alle Bestandteile der grafischen Oberfläche aufgelistet. Objekte mit veränderbaren Eigenschaften sind z.B. das Fenster (''"TForm"'') und der Knopf (''"TButton"''). Diese Objekte können auch Signale auslösen, die wiederum mit Quelltext verknüpft werden. In diesem Beispiel löst das Ereignis ''"OnClick"'' des Knopfes die Prozedur ''"TForm1.Button1Click"'' aus, die in diesem Fall ein simples Nachrichtenfenster öffnet. Da diese Komponenten zur LCL (Lazarus Component Library) gehören, werden damit erstellte Anwendungen meist recht groß. Einen weiteren maßgeblichen Anteil an der Größe der kompilierten Programmdatei haben zusätzlich Debug-Informatonen, welche für die Verwendung von gdb (GNU Debugger) notwendig sind. Diese und weitere Einstellungen können über die Kompilereinstellungen deaktiviert werden, so das nach dem Entfernen von ''Debugger-Symbolen'' und dem Festlegen von ''Smart-Linking'' die kompilierten Programmdateien zum Teil 10% der Ursprungsdatei sind sind. Nähere Informationen kann man den [https://wiki.freepascal.org/Lazarus_Faq/de#Warum_sind_die_generierten_Binaries_so_gro.C3.9F.3F4 FAQ des freepascal-wiki] {de} entnehmen bzw. man kann das Thema mit Hilfe des freepascal-wiki-Artikels [https://wiki.freepascal.org/Size_Matters/de Size Matters] {de} vertiefen. = Probleme und Lösungen = == Kompilierte Programme sind sehr groß == Mit den Standard-Einstellungen unmittelbar nach der Installation produziert der Compiler sehr große Dateien. Dies liegt unter anderem an zusätzlichen Debug-Informatonen, welche für die Verwendung von gdb (GNU Debugger) notwendig sind. Damit man Projekte weiterhin debuggen und im Fertigstellungsfall deutlich verkleinern kann, ist es möglich in den Projekteinstellungen verschiedene ''Erstellungsmodi'' bereit zustellen. Dies geschiet wie folgt: 1. gehe ins Menü ''Projekt -> Projekteinstellungen ...'' 1. wähle im neuen Fenster ''Einstellungen für Projekt:'' in der Baumstruktur den Punkt ''Compilereinstellungen->Debuggen'' aus 1. klicke auf den Knopf ''...'' rechts oben neben der ''Erstellmodi'' 1. in dem neuen Fenster ''Erstellmodus'' klickt man nun auf den Knopf ''Create Debug and Release modes'' Nun werden zwei neue Modi mit den Namen ''Debug'' und ''Release'' erstellt. Diese werden mit gängigen Standard-Einstellungen versehen und können danach vor dem kompilieren ausgewählt werden. Wählt man nun den ''Release'' Modus aus, so verkleinert sich die ausführbare Datei z.B. des oben beschriebene ''HalloWelt-Programms'' auf fast 10% gegenüber der Ursprungsversion mit den Debug Informationen (von ca. 24 MiB auf ca. 2,7 MiB). = Links = * [https://www.lazarus-ide.org/ Projektseite] {en} * [https://wiki.lazarus.freepascal.org/ Lazarus Wiki Dokumentation] {en} {de} * [https://lazarusforum.de Inoffizielles Lazarusforum] {de} * [https://delphi-treff.de Tipps zur Programmiersprache Pascal] {de} * [https://github.com/Fr0sT-Brutal/awesome-pascal ''awesome-pascal'' - eine aktuelle Liste mit open-source Projekten zu FreePascal bzw. Lazarus-IDE/Delphi.] {en} * [https://wiki.lazarus.freepascal.org/Components_and_Code_examples zusätzliche Lazarus-Komponenten] {en} # tag: Programmierung