Sign in Join
Wiki copytemporary

Lazarus Faq/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Allgemein
22
33### Warum sind die generierten Binaries so groß?
44
55Die Binaries sind groß, weil sie eine Menge Debug-Informationen enthalten, die für die Verwendung von gdb (GNU Debugger) notwendig sind.
66
77Der Compiler bietet eine Option, die Debug-Informationen aus dem Executable zu entfernen (-Xs), aber wegen eines Bugs im Compiler (Version 2.0.2 und früher), funktioniert es nicht korrekt. In Version 2.0.4 und in der Entwicklerversion des Compilers wurde dies bereinigt. Prüfen sie bei den Compilereinstellungen auch, ob 'Zeilennummern in Laufzeit-Backtraces anzeigen' und 'Smart Linken' aktiviert sind und ändern sie ggf. die Einstellungen.
88
99Sie können ein Programm genannt "strip" verwenden, um die Debug-Symbole aus dem Executable zu entfernen. In Windows befindet es sich im Lazarusverzeichnis "lazarus\fpc\fpcversion\bin\i386-win32\\." unter Linux lässt es sich direkt von der Kommandozeile aus starten.
1010
1111Tippen Sie einfach "strip --strip-all \<ihr Executable mit Pfad\>" auf der Kommandozeile.
1212
1313Wenn Sie Ihr Programm noch kleiner machen wollen, sollten Sie auch UPX ([1](http://upx.sourceforge.net/)) versuchen. UPX ist ein sehr gutes Programm zur Komprimierung ausführbarer (Binär-)Dateien. UPX beansprucht nur wenig zusätzlichen Speicher während der Dekompression, die außerordentlich schnell von statten geht (~10 MB/sec auf einem Pentium 133). Man braucht also nicht zu befürchten, durch die Verwendung von UPX erwähnenswerte Nachteile zu haben.
1414
1515Um UPX zu verwenden, tippen Sie einfach "upx \<ihre ausführbare Datei mit Pfad\>" in die Kommandozeile.
1616
1717Nach der Verwendung von strip und UPX erreicht ein einfaches [[Glossary|GUI]] Lazarus Programm:
1818
1919- ~ 700kb unter Linux
2020- ~ 420kb unter Windows
2121
2222Eine detailliertere Antwort wird auf [[Size Matters/de|Size Matters]] gegeben.
2323
2424Hinsichtlich der Größe der Lazarus-Anwendungen ist es außerdem wichtig anzumerken, dass selbst ein simples "Hello World"-Programm bereits eine Vielzahl an Fähigkeiten beinhaltet. Im Einzelnen:
2525
2626- Eine Bibliothek zur Handhabe von XML
2727- Bibliotheken, um mit Bildformaten wie png, xpm, bmp und ico umzugehen
2828- Die ganze Bandbreite der Lazarus Komponenten-Bibliothek (LCL)
2929- Die komplette Free Pascal Laufzeitumgebung (RTL)
3030
3131Man muss bei der Größe der ausführbaren Datei also berücksichtigen, dass ein einfaches Lazarus-Programm alle Fähigkeiten "beinhaltet", die von einem komplexen und nichttrivialen Programm in Anspruch genommen werden können.
3232
3333Mit wachsender Komplexität wächst die Größe der Lazarus-Anwendungen sehr langsam. Verglichen mit anderen Compilern und/oder Programmiersprachen erscheinen somit kleinere Programme (etwa Hello-World-Programme) als lazaruscompilierte Anwendungen größer - bei Programmen zunehmender Komplexität jedoch meist kleiner. Dieser Umstand begründet sich in der Art und Weise, wie der FreePascal-Compiler den Quelltext in Maschinensprache übersetzt. Das folgende Schaubild soll den Umstand veranschaulichen:
3434
35-<figure>
36-<img src="Lazarus_vs_cpp.png" title="Lazarus_vs_cpp.png" />
37-<figcaption>Lazarus_vs_cpp.png</figcaption>
38-</figure>
35+![](/wiki-images/d/de/Lazarus_vs_cpp.png)
3936
4037### Warum ist das Linken unter Windows so langsam?
4138
4239Im Allgemeinen benötigt die Kompilierung unter Windows mehr Zeit als auf anderen Plattformen, weil der von Free Pascal genutzte GNU Linker auf dieser Plattform langsam ist.
4340
4441Seitdem Lazarus Smartlinking unterstützt, sind die kompilierten Anwendungen (nach "strip" und "upx", siehe unten) etwa 30% kleiner als zuvor. Das bringt den Nachteil mit sich, dass der Vorgang des Linken dadurch sehr viel komplizierter geworden ist - was einige Probleme mit dem GNU Linker mit sich brachte und den Link-Vorgang verlangsamte. Weitere Informationen zu diesem Thema finden Sie hier:[[File size and smartlinking]]
4542
4643Dieses Problem betrifft jedoch nur Windows, und tritt vor allem auf relativ alten Computern (weniger als 1Ghz) und Computern mit wenig RAM (128MB oder weniger) in Erscheinung.
4744
4845Ein interner Linker wurde entwickelt. Er wird aber erst mit Free Pascal 2.2 verfügbar sein (natürlich ist er in SVN verfügbar). Er verringert die Zeit für das Linken dramatisch.
4946
5047Aber was kann man bis dahin machen, um den Linkvorgang zu beschleunigen? - Sie haben zwei Möglichkeiten:
5148
52491. Schalten sie smartlinking unter "Projekt -\> Compilereinstellungen... -\> Linken -\>Linker-Stil" aus. Unglücklicherweise reicht diese Einstellung alleine nicht aus. Sie müssen zusätzlich den Befehl "-XS" unter "Projekt -\> Compilereinstellungen... -\> Linken -\> Einstellungen" hinzufügen.
53502. Alternativ können Sie Ihre LCL neu kompilieren. Öffnen Sie dazu Lazarus. Gehen sie zum Menü "Werkzeuge" -\> "Lazarus Einstellungen einrichten". Setzen Sie hier die Zeile "LCL erstellen" auf "clean+build", und alle anderen Zeilen auf "none"; klicken Sie anschließend auf OK. Gehen sie jetzt zu "Werkzeuge" -\> "Lazarus erstellen".
5451
5552Nach diesen Einstellungen ist das Smartlinking deaktiviert. Vorteil: Das Linken erfolgt schneller; Nachteil: Die ausführbaren Dateien werden größer.
5653
5754### Brauche ich ppc386.cfg oder fpc.cfg?
5855
5956Sie brauchen nur fpc.cfg. Auf diese Weise kann der Compiler die Bibliotheken finden.
6057
6158### Wie kompiliere ich Lazarus?
6259
6360Sie können Lazarus kompilieren, indem Sie von Ihrer Konsole aus zunächst in das Verzeichnis von Lazarus wechseln, beispielsweise:
6461
6562``` bash
6663$ cd lazarus
6764```
6865
6966Und anschließend den folgenden Befehl eingeben:
7067
7168``` bash
7269$ make clean all
7370```
7471
7572### Wie erzeuge ich andere Projekte basierend auf der LCL?
7673
7774Wenn sie aus irgendwelchen Gründen die IDE nicht benutzen können oder wollen, um ihre Applikationen zu bauen, benutzen sie stattdessen lazbuild. Das ist eine Kommandozeilenversion der IDE zum Bau von Lazarus - Projekten und -Packages. Wenn sie LCL-Applikationen bauen möchten, *ohne* die IDE oder lazbuild zu verwenden, fügen sie bitte die folgenden Zeilen am Ende ihrer *fpc.cfg* ein:
7875
7976`  # searchpath for other toolkits (Linux)`\
8077`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{YourToolKit}`
8178
8279`  # searchpath for other toolkits (Windows)`\
8380` -Fu/{YourLazarusDirectory}/components/units/{YourToolKit}`
8481
8582
8683Wobei {YourToolKit} *gtk2*, *gnome*, *qt* oder *win32* sein kann. Danach führen sie bitte folgendes aus:
8784
8885
8986ppc386 your.project.pp
9087
9188**Hinweis:** Vergessen sie nicht, die Entwicklungs Packages für ihr Toolkit zu installieren. Andernfalls können sie eine Meldung wie: [[Linker message: cannot find -l/de|Linker message: cannot find -l]] erhalten.
9289
9390### Welche Version von FPC wird benötigt?
9491
95922.2.2 auf allen unterstützten Systemen
9693
9794### Ich kann Lazarus nicht kompilieren.
9895
99961. Prüfen Sie, ob der Compiler die richtige Version hat.
100972. Prüfen Sie, ob die (fpc) Bibliotheken (libraries) dieselbe Version haben.
101983. Prüfen Sie, ob Sie die fpc.cfg haben und nicht die alte ppc386.cfg.
102994. Prüfen Sie auch die für ihr Betriebssystem spezifischen FAQs.
1031005. Prüfen Sie, wenn sie das Projekt schonmal kompiliert haben ob die kompilierte Version nicht schon läuft.
1041016. Speichern Sie das Projekt. (War bei meinem Laptop unter W. XP nötig(v.0.9.27))
105102
106103### Wenn ich versuche, ein Projekt zu kompilieren, bekomme ich eine Fehlermeldung:
107104
108105#### "Cannot find Unit interfaces" (Kann Unit interfaces nicht finden). Wie kann ich das Problem lösen?
109106
110107Dies bedeutet, dass der Compiler die Datei 'interfaces.ppu' nicht finden kann **oder** er eine findet, die falsch oder veraltet ist.
111108
112109Die Unit findet man in {LazarusDir}\lcl\units\\{TargetCPU}-{TargetOS}\\{LCLWidgetSet}\interfaces.ppu. Zum Beispiel: /home/Benutzername/lazarus/lcl/units/i386-linux/gtk/interfaces.ppu.
113110
114111Stellen sie sicher, dass sie nur dort ist. Wenn sie mehrere Versionen von interfaces.ppu haben, dann haben sie wahrscheinlich eine verkehrte Konfiguration (zum Beispiel, wenn sie ein LCL-Verzeichnis zum Suchpfad hinzugefügt haben). Entfernen sie alle interfaces.ppu, bis auf die eine im obigen Verzeichnis.
115112
116113Wenn sie ein anderes Widgetset ausgewählt haben, dann müssen sie die LCL für dieses Widgetset erzeugen, um Lazarus zu erzeugen.
117114
118115Wenn es dort ist, sie aber diese Fehlermeldung erhalten, dann benutzen sie einen anderen Compiler / RTL für die Kompilierung ihres Projekts als sie für die Kompilierung ihrer Lazarus IDE benutzt haben. Sie können eine der folgenden Maßnahmen ergreifen:
119116
120117- Bauen sie die LCL neu auf (oder Lazarus komplett) mit dem Compiler, der in den Umgebungsoptionen selektiert ist. Sie können dies tun mit Werkzeuge -\> Lazarus erstellen. Bevor sie dies tun, prüfen sie die gegenwärtigen Einstellungen in Werkzeuge -\> Configure "Build Lazarus".
121118- Ändern sie den Compiler in den Umgebungsoptionen auf denjenigen, den sie zum Kompilieren von Lazarus benutzt haben. Schauen sie auch sorgfältig in den Umgebungsoptionen nach, ob sie die richtigen Pfade für das Lazarus-Verzeichnis und das FPC-Quellverzeichnis benutzen. Prüfen sie, dass es nur eine Version der Compiler-Konfigurationsdatei fpc.cfg gibt - sie sollte sich für Linux/Unix Systeme in /etc/ befinden und für Windows Systeme im selben Verzeichnis wie der FPC Compiler. Rogue-Kopien schleichen sich oft ein, wenn sie ihren Compiler auf ein neuere Version upgedated haben; Sie befinden sich in ihrem *home* Verzeichnis oder im selben Verzeichnis , in dem sie ihren neuen Compiler erstellt haben. Löschen sie diese!!
122119
123120### Wenn ich versuche, Delphi-Projekte unter Lazarus zu kompilieren, erhalte ich eine Fehlermeldung auf der Zeile :{\$R *.DFM} Wie kann ich das Problem lösen ?
124121
125122Lazarus (oder besser Linux) weiß nichts über Ressourcen, daher können sie diese nicht auf die selbe Weise nutzen wie Delphi/Win32 es tut. Allerdings nutzt Lazarus eine Methode, die ziemlich kompatibel mit dieser ist. Mit folgenden Schritten können Sie ihre Delphi Layouts (.dfm Dateien) weiter benutzen:
126123
127124- Sie benötigen eine Textversion der .dfm Dateien. Delphi 5 und höher tun dies per Voreinstellung. Wenn sie ältere Dateien haben: ALT-F12, um das Layout als Text zu sehen und kopieren/einfügen. Wenn sie eine .dfm Datei in Textform haben, einfach in eine .lfm Datei kopieren.
128125- Erzeugen sie eine Datei mit lazres (in lazarus/tools): lazres yourform.lrs yourform.lfm
129126- Fügen sie den folgenden "initialization"-Abschnitt hinzu
130127
131128``` pascal
132129initialization
133130 {$I yourform.lrs}
134131```
135132
136133Beachten sie, dass nicht alle Eigenschaften in der dfm Datei von Lazarus unterstützt werden (bis jetzt), daher könnten sie einen Absturz erhalten.
137134
138135#### 'Identifier not found LazarusResources'.
139136
140137Wenn ein Formular erzeugt wird, dann fügt Lazarus automatisch einige zusätzliche Units zu dem uses-Abschnitt ihrer Formular-Unit hinzu. Während der Konvertierung einer Delphi-Unit zu einer Lazarus-Unit passiert dies nicht. Daher müssen sie LResources zu dem uses-Abschnitt ihrer Formular-Unit (manuell) hinzufügen.
141138
142139### Wenn Ereignisse von Objekten angesteuert werden z.B. das OnClick-Ereignis einer Schaltfläche, erhalte ich die folgende Fehlermeldung: ERROR unit not found: stdCtrls
143140
144141Stellen sie unter Projekt -\> Projektinspektor sicher, dass ihr Projekt auf dem Package 'LCL' beruht und dass sie die FPC-Quellen installiert haben.
145142
146143Lazarus ist die IDE und die visuelle Komponenten-Bibliothek LCL. Alle anderen Dinge, wie IO, Datenbanken, FCL und RTL werden von FPC zur Verfügung gestellt. Die IDE benötigt die Pfade zu allen Quellen.
147144
148145Der FPC-Quellenpfad kann gesetzt werden mittels: Einstellungen -\> Umgebungseinstellungen -\> Dateien -\> FPC-Quelltextverzeichnis
149146
150147### Wie kann man eine kleine Datei in das ausführbare Programm einbetten, ohne eine separate Datei zu benötigen? Wie kann man eine Ressource einbetten?
151148
152149Zum Beispiel:
153150
154151``` bash
155152/ihr/Lazarus/Pfad/tools/lazres sound.lrs sound1.wav sound2.wav ...
156153```
157154
158155wird sound.lrs aus sound1.wav und sound2.wav erzeugen.
159156
160157Dann fügen sie es hinter der Formular lrs Datei ein:
161158
162159``` pascal
163160 ...
164161 initialization
165162 {$i unit1.lrs} // this is main resource file (zuerst)
166163 {$i sound.lrs} // user defined resource file
167164
168165 end.
169166```
170167
171168In ihrem Programm können sie dann verwenden:
172169
173170``` pascal
174171 Sound1AsString := LazarusResources.Find('sound1').Value;
175172```
176173
177174### Wie kann ich die Debug-Ausgabe sehen?
178175
179176Die LCL stellt in der Unit LCLproc Prozeduren bereit, um Debug-Ausgaben zu machen:
180177
181178- **DebugLn:** arbeitet genau wie WriteLn, akzeptiert aber nur strings.
182179- **DbgOut:** arbeitet genau wie Write, akzeptiert aber nur strings.
183180
184181Unter normalen Umständen wird die Ausgabe auf stdout ausgegeben. Wenn stdout geschlossen ist, (z. B., wenn die Anwendung {\$AppType Gui} ist oder unter Windows mit -WG kompiliert wurde), wird nichts ausgegeben.
185182
186183Die Debug-Ausgaben können auch in eine Datei geschrieben werden. Die LCLProc Unit prüft in ihrer "initialization"-Sektion ob der Kommandozeilenparameter '--debug-log=\<file\>' mit übergeben wurde. Ist dies der Fall, wird die debug Ausgabe in \<file\> geschrieben.
187184
188185Wenn der Parameter nicht übergeben wurde (--debug-log), wird nach einer Umgebungsvariable gesucht, die xxx_debuglog heißt. xxx steht hierbei für den Exe-Namen ohne Erweiterung. Für Lazarus wäre dies lazarus_debuglog. Wenn eine solche Umgebungsvariable existiert, wird ebenfalls eine Datei geschrieben. Der Dateiname ist der Inhalt der Umgebungsvariablen. Beispiel: Wenn Sie folgendes tun:
189186
190187``` bash
191188set lazarus_debuglog=c:\lazarus\debug.txt
192189```
193190
194191Wird die Debug-Ausgabe nach c:\lazarus\debug.txt geschrieben.
195192
196193Jede Applikation, die LCLProc benutzt, kann diese Funktionalität benutzen.
197194
198195Lazarus Debuggen
199196Äußerst nützlich für Windows: Wenn Sie die Ausgabe auf einer Konsole sehen möchten, fügen sie {\$APPTYPE console} zu lazarus.pp hinzu. Dann erstellen sie Lazarus neu.
200197
201198### Welche Bedeutung haben die verschiedenen von Lazarus verwendeten Dateierweiterungen?
202199
203200Das [[Lazarus Tutorial]] erläutert einige Erweiterungen anhand eines Beispiels. Hier ist eine kurze Auflistung:
204201
205202`*.lpi`
206203Lazarus Project Information Datei (XML Format; enthält projekt-spezifische Einstellungen wie Compilereinstellungen und benötigte Packages)
207204
208205`*.lps`
209206Lazarus Program Session file; stored in XML; contains personal data like cursor positions, source editor files, personal build modes
210207
211208`*.lpr`
212209Lazarus Programm Datei; enthält den Pascal-Quelltext des Hauptprogramms
213210
214211`*.lfm`
215212Lazarus Formular Datei; enthält Konfigurationsinformationen für alle Objekte auf einem Formular (gespeichert in einem Lazarus-spezifischen Format; Die Aktionen werden durch Pascal-Quelltext in einer entsprechenden `*.pas` Datei beschrieben)
216213
217214`*.pas` oder `*.pp` oder `*.p`
218215Unit mit Pascal-Code (typischerweise für eine Form, gespeichert in einer entsprechenden `*.lfm` Datei)
219216
220217`*.lrs`
221218Lazarus-Ressourcen-Datei (dies ist eine erzeugte Datei; nicht zu verwechseln mit einer Windows-Ressourcen-Datei).
222219
223220Diese Datei kann erzeugt werden mit dem lazres-Werkzeug (im Verzeichnis Lazarus/Tools) und folgender Kommandozeile: lazres myfile.lrs myfile.lfm
224221
225222`*.ppu`
226223Kompilierte Unit, vom FreePascal Compiler für jede Unit und Programm erzeugt.
227224
228225`*.o`
229226Objekt-Datei, erzeugt vom Compiler, für jede ppu Datei gibt es eine korrespondierende o Datei, vom Linker benötigt.
230227
231228`*.lpk`
232229Lazarus package information Datei. (XML Format; enthält Package-spezifische Einstellungen wie Compilereinstellungen und benötigte Packages)
233230
234231`*.lrt`
235232Lazarus Resourcestring table file. created when saving a lfm file and i18n is enabled. It contains the TTranslateString properties of the lfm. Do not edit them, they are overwritten.
236233
237234`*.rst`
238235Resourcestring table file. created by the compiler for every unit with a resourcestring section. Do not edit them, they are overwritten.
239236
240237`*.po`
241238gnu gettext messages file. When i18n is enabled the IDE creates/updated the .po files with the resourcestrings from the rst and lrt files.
242239
243240### Ich habe Lazarus repariert/erweitert. Wie kann ich meine Änderungen zu den offiziellen Lazarus Quellen hinzufügen?
244241
245242Erzeugen sie einen Patch und senden sie ihn an die Entwickler. Für Details siehe [[Creating A Patch/de|Creating A Patch]].
246243
247244### Bei dem Versuch, eine Textdatei über *var mytext: text;* zu deklarieren, kommt der Fehler "Unit1.pas(32,15) Error: Error in type definition". Wie kann ich vorgehen?
248245
249246Der Grund für die Fehlermeldung ist: Zum Typ Text gibt es eine gleichnamige Eigenschaft der Klasse TControl: Die TControl Klasse hat eine [[doc:lcl/controls/tcontrol.text.html|Text]] Eigenschaft. Zum Umgang mit Textdateien hingegen wird der Typ [[doc:rtl/system/text.html|Text]] der Unit System benötigt. Aus Gründen der Unterscheidbarkeit müssen Sie daher für den Umgang mit Textdateien den Typ [[doc:rtl/system/textfile.html|TextFile]] verwenden. Es handelt sich dabei um ein Pseudonym des Types Text der Unit System. Beispiel:
250247
251248``` pascal
252249var
253250 MyTextFile: TextFile;
254251```
255252
256253Alternativ kann man die zum Typ Text gehörende Unit in die Definition mit aufnehmen:
257254
258255``` pascal
259256var
260257 MyTextFile: System.Text;
261258```
262259
263260Ähnliche Probleme tauchen beim Umgang mit Textdateien in Verbindung mit den Befehlen "assign" und "close" auf. TForm hat eine *assign* und eine [[doc:lcl/forms/tcustomform.close.html|Close]] Methode. Für den Umgang mit Textdateien müssen Sie daher die Pseudonyme [[doc:rtl/objpas/assignfile.html|AssignFile]] und [[doc:rtl/objpas/closefile.html|CloseFile]] verwenden oder alternativ dazu den Unitnamen *System* hinzufügen.
264261
265262### Ich erhalte eine Fehlermeldung bei der Verwendung von Printer.BeginDoc
266263
267264Die Unit Printers muss zum Abschnitt uses hinzugefügt werden.
268265
269266Das Package *Printer4Lazarus* muss zu den Projektvoraussetzungen in der IDE hinzugefügt werden: Projekt -\> Projektinspektor -\> Hinzufügen -\> Neue Anforderung -\> Package-Name:
270267
271268Falls das Package *Printer4Lazarus* nicht in der Liste in der Dropdown-Box auftaucht, muss es erst installiert werden. Das Package ist Teil der Lazarus-Installation und befindet sich in
272269
273270\[Lazarus Installationsverzeichnis\]\components\printers
274271
275272Wenn sie die Vorgabeinstallationsverzeichnisse verwendet haben, ist das Lazarus Installationsverzeichnis unter:
276273
277274- Windows: c:\lazarus
278275- Linux: /usr/lib/lazarus
279276
280277### Wie kann ich ein Lazarus-Entwickler werden und Zugang zu SVN und dem Bug-tracker erhalten?
281278
282279Voraussetzung: Sie müssen Lazarus erlernen und ihre Kenntnisse und Fähigkeiten beweisen. Fangen sie an, die [[Lazarus Documentation/de|Wiki Artikel]] zu lesen, den Lazarus Quellcode, schauen sie im [Lazarus Bug-Tracker](http://www.lazarus.freepascal.org/mantis) nach, beseitigen sie einige Bugs und wenn sie denken, dass sie soweit sind, kontaktieren sie die Entwickler auf der [Mailing Liste](http://www.mail-archive.com/lazarus@miraclec.com).
283280
284281## Wo ist ... definiert?
285282
286283### Virtual key constants
287284
288-Virtual key constants sind definiert in [[doc:lcl/lcltype|LCLType]]. Fügen sie LCLtype zu ihrem <b>uses</b>-Abschnitt hinzu.
285+Virtual key constants sind definiert in [[doc:lcl/lcltype|LCLType]]. Fügen sie LCLtype zu ihrem uses-Abschnitt hinzu.
289286
290287## Nutzung der IDE
291288
292289### Wie kann ich die "Automatische Vervollständigung (identifier completion)" nutzen?
293290
294-Sie können die "identifier completion" aufrufen, indem Sie die Tasten <span class="kbd">Ctrl</span>+<span class="kbd">Space</span> drücken. Unter dem Menüpunkt *"Einstellungen --\> Editoreinstellungen --\> Editor --\> Vervollständigung/Hinweise"* kann man einstellen, wie schnell dies automatisch passieren soll.
291+Sie können die "identifier completion" aufrufen, indem Sie die Tasten `Ctrl`+`Space` drücken. Unter dem Menüpunkt *"Einstellungen --\> Editoreinstellungen --\> Editor --\> Vervollständigung/Hinweise"* kann man einstellen, wie schnell dies automatisch passieren soll.
295292
296293### Lazarus-IDE mit andockbaren Fenster
297294
298295Eine IDE mit angedockten Fenstern kann mit Hilfe von "AnchorDocking" erzeugt werden, das seit langer Zeit mit Lazarus ausgeliefert, aber standardmäßig nicht installiert wird. Für die Installation sind folgende Schritte nötig:
299296
300297- *"Package --\> Installierte Package einrichten... --\> Verfügbar für Installation"* - *anchordockingdsgn x.x* wählen.
301-- <span class="kbd">Auswahl installieren</span>
302-- <span class="kbd">Speichern und IDE rekompilieren</span>
303-- <span class="kbd">Fortsetzen</span>
298+- `Auswahl installieren`
299+- `Speichern und IDE rekompilieren`
300+- `Fortsetzen`
304301- IDE wird nun kompiliert
305-- Nach dem Neustart: *"Werkzeuge --\> Einstellungen... --\> Umgebung --\> Docking / Anchordocking"* - Docking den Bedürfnissen anpassen. <span class="kbd">Ok</span>
302+- Nach dem Neustart: *"Werkzeuge --\> Einstellungen... --\> Umgebung --\> Docking / Anchordocking"* - Docking den Bedürfnissen anpassen. `Ok`
306303
307304 +-------------------++--+
308305 |Menü || |
309306 +-------------------+| |
310307 +--++---------------+| |
311308 |PI|| Quelltext- ||CE|
312309 +--+| editor || |
313310 +--+| || |
314311 | |+---------------++--+
315312 |OI|+-------------------+
316313 | ||Nachrichten |
317314 +--++-------------------+
318315
319316## Linux
320317
321318### Wie kann ich unter Linux ohne die IDE debuggen?
322319
323320Zuerst benötigen sie einen Debugger. gdb ist der Standard-Debugger unter Linux und verschiedene GUI-frontends sind verfügbar. Ein gebräuchliches Frontend ist ddd, das Bestandteil der meisten gebräuchlichen Distributionen ist. Um Lazarus/lcl mit Debug-Informationen zu kompilieren, sollten sie die folgenden Kommandos benutzen, um eine Debug-Sitzung zu starten:
324321
325322``` bash
326323$ make clean; make OPT=-dDEBUG
327324$ ddd lazarus
328325```
329326
330327Seien sie jedoch gewarnt, dass ddd nicht so komfortabel wie zB. der Lazarus-Debugger ist. Besonders, wenn es darum geht, sich die Inhalte von Variablen anzuschauen, müssen sie berücksichtigen, dass ddd/gdb case-sensitive sind, während Pascal case-insensitive ist. Deshalb müssen sie alle Variablennamen in Großbuchstaben schreiben, um ihre Inhalte zu sehen. Für mehr Informationen schauen sie in die FPC-Handbücher.
331328
332329### Ich kann jetzt debuggen, aber ddd findet meine Quellen nicht oder reklamiert, dass sie keinen Code enthalten. Was ist das?
333330
334331Dies ist ein Pfad-bezogenes Problem entweder mit gdb oder ddd. Sie können dies vermeiden durch
335332
336333- Benutzen des "Change directory" Kommandos aus dem ddd-Menü und Wahl des Verzeichnisses, wo sich die Quellen befinden. Das Manko dieser Methode ist, dass sie jetzt die Quelle des Programms, mit dem sie starteten (z.B. Lazarus) nicht benutzen können. Daher mag es notwendig sein, das Verzeichnis mehrmals zu ändern.
337334- In ddd gehen sie zu \[Edit\] \[gdb-settings\] und setzen den Suchpfad
338335- Erstellen einer \$(HOME)/.gdbinit Datei wie:
339336
340337`     directory /your/path/to/lazarus`\
341338`     directory /your/path/to/lazarus/lcl`\
342339`     directory /your/path/to/lazarus/lcl/include`
343340
344341### Ich erhalte einen Fehler während des Linken der besagt, dass /usr/bin/ld nicht -l\<some lib\> finden kann
345342
346343**Package basierte Distributionen**
347344Sie müssen das Package installieren, das die lib\<somelib\>.so oder lib\<somelib\>.a Dateien bereitstellt. Dynamische Bibliotheken unter Linux haben die Erweiterung .so, während statische Bibliotheken die Erweiterung .a haben. On some Linux distro's you have installed the package (rpm, deb) \<packagename\> which provides \<some lib\>, but you also need the development package (rpm, deb), normally called \<packagename\>-dev, die die .a (static lib) und/oder die .so (dynamic lib) enthalten.
348345
349346**Source Based Distributionen und manuelle Kompilierung (LFS)**
350347Stellen sie sicher, dass es eine lib\<somelib\>.a im Pfad gibt, und dass sie die richtige Version enthält. Damit der Linker die dynamische Bibliothek finden kann, erstellen sie ein symlink mit Namen lib\<some lib\>.so to lib\<some lib\>\<version\>-x,y.so if necessary (and/or for static lib; lib\<some lib\>.a to lib\<some lib\>\<version\>-x,y.a).
351348
352349**FreeBSD**
353350Wie bei sourcebasierten Distributionen. Stellen sie außerdem sicher, dass sie -Fl/usr/local/lib in ihrer fpc.cfg und/oder ihrem Lazarus Bibliothekspfad haben. Bitte beachten sie, dass GTK1.2 unter FreeBSD den Paketnamen *gtk12* hat (Genauso wie glib)
354351
355352**NetBSD**
356353Wie bei sourcebasierten Distributionen. Stellen sie außerdem sicher, dass sie -Fl/usr/pkg/lib in ihrer fpc.cfg und/oder ihrem Lazarus Bibliothekspfad haben.
357354
358355### Wie kann ich ein Kylix 2 Projekt in ein Lazarus Projekt konvertieren?
359356
360357Beinahe auf die selbe Weise wie man ein Kylix Projekt in ein Delphi/VCL Projekt konvertiert.
361358
362359Die LCL (Lazarus Component Library) versucht kompatibel zu Delphis VCL zu sein. Kylix CLX versucht kompatibel zu QT sein. Hier sind einige allgemeine Hinweise:
363360
364361- Benennen sie alle benutzten CLX Q-Units wie QForms, QControls, QGraphics, ... in ihre VCL Entsprechungen: Forms, Controls, Graphics, ... um.
365362- Fügen sie LResources zum uses-Abschnitt jeder Formularquelle hinzu.
366363- Benennen sie alle .xfm Dateien in .lfm Dateien um oder kopieren sie sie.
367364- Benennen sie die .dpr Dateien in .lpr Dateien um oder kopieren sie sie.
368365- Entfernen sie die {\$R *.res} Direktive.
369366- Entfernen sie die {\$R *.xfm} Direktive.
370367- Fügen sie die {\$mode objfpc}{\$H+} oder {\$mode delphi}{\$H+} Direktive zu den .pas und .lpr Dateien hinzu.
371368- Fügen sie einen initialization-Abschnitt am Ende jeder Formularquelle hinzu und auch eine include Direktive für die .lrs Datei (lazarus resource file):
372369
373370``` pascal
374371initialization
375372 {$I unit1.lrs}
376373```
377374
378375
379376Die .lrs Dateien können erzeugt werden mit dem lazres Tool in: (lazarusdir)/tools/lazres.
380377
381378Zum Beispiel: ./lazres unit1.lrs unit1.lfm
382379
383380- Fix the differences. Die LCL unterstützt noch nicht jede Eigenschaft der VCL und die CLX ist nicht völlig VCL kompatibel.
384381- To make it more platform independant, reduce unit libc (which is deprecated) references and substitute with native FPC units like baseunix/unix as much as possible. This will be necessary to support other targets than linux/x86 (including macOS, FreeBSD and Linux/x86_64)
385382
386383### Während der Kompilierung von Lazarus kann der Compiler eine Unit nicht finden. (z.B. gtkint.pp(17,16) Fatal: Can't find unit GLIB)
387384
3883851\. Testen sie einen sauberen Neuaufbau: benutzen sie 'make clean all'
389386
3903872\. Prüfen sie, ob der Compiler die richtige Version hat (z.B. 2.0.4)
391388
3923893\. Prüfen sie, ob der Compiler die richtige Konfigurationsdatei benutzt. Die normale Installation erstellt /etc/fpc.cfg. Aber FPC sucht auch nach ~/.ppc386.cfg, ~/.fpc.cfg, /etc/ppc386.cfg und es benutzt nur die erste gefundene Datei.
393390
394391
395392**Hinweis:** Sie können mit 'ppc386 -vt bogus' sehen, welche Konfigurationsdatei verwendet wird.
396393
3973944\. Prüfen sie, ob die Konfigurationsdatei (/etc/fpc.cfg) die richtigen Pfade zu ihren FPC Bibliotheken enthält. Dort müssen drei Zeilen etwa so sein:
398395
399396`   -Fu/usr/lib/fpc/$version/units/$target`\
400397`   -Fu/usr/lib/fpc/$version/units/$target/*`\
401398`   -Fu/usr/lib/fpc/$version/units/$target/rtl`
402399
403400
404401Der erste Teil dieser Pfade (/usr/lib/fpc) hängt von ihrem System ab. Bei einigen Systemen kann dies zum Beispiel /usr/local/lib/fpc/... sein.
405402
406403**Hinweis:** Sie können ihre Suchpfade mit 'ppc386 -vt bogus' sehen.
407404
4084055\. Prüfen sie, dass die Konfigurationsdatei (/etc/fpc.cfg) keine Suchpfade zu den den LCL Quelldateien (.pp, .pas) enthält:
409406
410407` verboten: -Fu(lazarus_source_directory)/lcl`\
411408` verboten: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
412409
413410
414411Wenn sie die LCL für alle ihre FPC Projekte hinzufügen wollen, stellen sie sicher, dass die zwei Pfade wie die folgenden aussehen und nach den obigen FPC - Bibliotheken Pfaden platziert werden:
415412
416413` -Fu(lazarus_source_directory)/lcl/units`\
417414` -Fu(lazarus_source_directory)/lcl/units/gtk`
418415
4194166\. Prüfen sie, ob die vermisste Unit (glib.ppu) in ihrem FPC-Bibliotheken-Verzeichnis existiert. Zum Beispiel die gtk.ppu ist unter /usr/lib/fpc/\$fpcversion/units/linux/gtk/ zu finden. Wenn sie nicht existiert, ist die FPC Bibliothek beschädigt und sollte neu installiert werden.
420417
4214187\. Prüfen sie, ob die Quellen sich in einem NFS gemountetem Verzeichnis befinden. In einigen Fällen updated das NFS erstellte Dateien nicht korrekt. Bitte versuchen sie, die Dateien in ein nicht NFS Verzeichnis zu verschieben und kompilieren dort.
422419
4234208\. Sollte dies immer noch nicht zum Erfolg führen, versuchen sie das samplecfg-Skript auszuführen:
424421
425422*\#* cd /usr/lib/fpc/*version*/
426423
427424*\#* sudo ./samplecfg /usr/lib/fpc/*\\\$version* /etc
428425
429426Anmerkung! Fügen sie kein - / - nach 'etc' ein, denn wenn sie es tun, wird das System eine Datei - /etc/fpc.cfg/fpc.cfg erzeugen. Wir wollen, dass samplecfg eine Datei erzeugt - /etc/fpc.cfg - und nicht das Verzeichnis /etc/fpc.cfg.
430427
431428### Ich habe die binäre Version installiert, aber wenn ein einfaches Projekt kompiliert wird, meldet Lazarus: Fatal: Can't find unit CONTROLS
432429
433430Wahrscheinlich nutzen sie ein neueres FPC Package als bei der Erstellung der Lazarus Binärdateien. Die beste Lösung ist der Download der Quellen und die manuelle Kompilierung von Lazarus. Sie können den Quellen Snapshot downloaden oder die Quellen über CVS erhalten (Anmerkung: das Lazarus Projekt ist inzwischen von CVS auf SVN umgestiegen):
434431
435432``` bash
436433 $ bash
437434 $ export CVSROOT=:pserver:cvs@cvs.freepascal.org:/FPC/CVS
438435 $ cvs login
439436 # Hint: The password is '''''cvs''''' (lowercase).
440437 # Hint 2 : Of course, "cvs" is not the correct password, what did you expect ?
441438 # see [[Getting_Lazarus#Using_the_command_line]]
442439 $ cvs -z3 checkout lazarus
443440 $ cd lazarus
444441 $ make
445442```
446443
447444Stellen sie sicher, dass Lazarus das neue Quellenverzeichnis erhält: Werkzeuge -\> Einstellungen -\> Umgebung -\> Dateien
448445
449446### Lazarus kompiliert, aber das Linken schlägt fehl mit: libgdk-pixbuf not found
450447
451448Entweder installieren sie die gdk-pixbuf Bibliothek für GTK1.x oder unterdrücken die Verwendung.
452449
453450Wo ist die gdk-pixbuf Bibliothek zu finden:
454451
455452RPMs: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
456453
457454Debian Packages: libgdk-pixbuf-dev
458455
459456Quellen: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
460457
461458Wie unterdrückt man die Verwendung in Lazarus: In Werkzeuge-\>Configure "Build Lazarus" fügen sie die Option '-dNoGdkPixBufLib' hinzu oder auf der Kommandozeile: "make clean all OPT=-dNoGdkPixBufLib".
462459
463460### Ich habe SuSE und ich erhalte /usr/bin/ld: cannot find -lgtk Error: Error while linking
464461
465462SuSE installiert die GTK Entwickler Bibliotheken unter /opt/gnome/lib, das nicht im Standard Bibliothekenpfad ist. Fügen sie es einfach zu ihrer /etc/fpc.cfg hinzu. (-Fl/opt/gnome/lib).
466463
467464### Lazarus stürzt mit Laufzeitfehler 211 ab, nachdem ich eine Komponente installiert habe
468465
469466Nachdem ich eine Komponente installiert habe, stürzt Lazarus mit folgender Meldung ab:
470467
471468`Threading has been used before cthreads was initialized.`\
472469`Make cthreads one of the first units in your uses clause.`\
473470`Runtime error 211 at $0066E188`
474471
475472WIe kann der Fehler behoben werden?
476473
477474Ihre frisch installierte Komponente benutzt Threads. Der FPC auf einem *nix sorgt nicht automatisch dafür, das Threads unterstützt werden, dieses muss manuell festgelegt werden. Die nötige Initialisierung geschieht mit der cthreads unit. Jedes Programm, das Ihre neue Komponente einsetzt, benötigt im Hauptprogramm die cthread unit in der uses Klausel. Auch Lazarus selbst macht dabei keine Ausnahme.
478475
479476Es gibt 2 Wege, wie man Threading unter *nix aktiviert:
480477
4814781\) Open the package. In the package editor click on *Options*. Under page *Usage* add to the *custom* options **-dUseCThreads**. Then rebuild the IDE. This way the cthreads unit will be automatically used by the IDE under unix and the cthreads are initialized.
482479
4834802\) In order to avoid modifying package, a fpc compiler option could be used directly. Open menu Tools-\>Configure "build Lazarus". Configure "build Lazarus" dialog will be shown, in field "Options:" type -Facthreads and then press "OK" button. The next step is to install the package. Lazarus will be built with option -Facthreads which means that it will treat main program as if unit cthreads where first in uses clause.
484481
485482*Hint:* Maybe your old (non-crashing) lazarus executable is stored as lazarus.old in the same directory as the crashing lazarus executable.
486483
487484Siehe auch [[Multithreaded Application Tutorial|Multithreaded_Application_Tutorial#Units_needed_for_a_multithreaded_application]]
488485
489486### Wenn ich ein Programm mit Threads starte erhalte ich den Laufzeitfehler 232
490487
491488Die vollständige Fehlermeldung lautet:
492489
493490`This binary has no thread support compiled in.`\
494491`Recompile the application with a thread-driver in the program uses`\
495492`clause before other units using thread.`\
496493`Runtime error 232`
497494
498495**Lösung**: Die für Unix/Linux benötigte Unit, cthreads, wird von der IDE standardmäßig im uses-Abschnitt des Hauptprogramms (üblicherweise die .lpr-Datei) hinzugefügt, ist allerdings durch das Symbol UseCThreads deaktiviert, weil die meisten Programme keine Threads verwenden. Definieren Sie {\$DEFINE UseCThreads} damit die Unit eingebunden wird, oder entfernen Sie das {\$IFDEF UseCThreads} (das \$IFDEF UNIX wird immer benötigt, um die Einbindung der Unit bei Nicht-Unix/Linux-System zu unterbinden).
499496
500497Project1.lpr könnte dann in etwa so aussehen:
501498
502499``` pascal
503500program project1;
504501
505502{$mode objfpc}{$H+}
506503{$define UseCThreads}
507504
508505uses
509506 {$IFDEF UNIX}{$IFDEF UseCThreads}
510507 cthreads,
511508 {$ENDIF}{$ENDIF}
512509 Interfaces, // this includes the LCL widgetset
513510 Forms, unit1
514511 { you can add units after this };
515512```
516513
517514oder so:
518515
519516``` pascal
520517program project1;
521518
522519{$mode objfpc}{$H+}
523520
524521uses
525522 {$IFDEF UNIX}
526523 cthreads,
527524 {$ENDIF}
528525 Interfaces, // this includes the LCL widgetset
529526 Forms, unit1
530527 { you can add units after this };
531528```
532529
533530### Ich habe Ubuntu Breezy und meine Fonts in der Lazarus IDE sind zu groß
534531
535532Falls Lazarus mit GTK1.2 kompiliert ist, haben die Einstellungen in Gnome Preferences/Font keine Auswirkungen, da sie sich auf GTK2 beziehen. Sie können diese Lösung versuchen: Erzeugen sie eine Datei mit dem Namen .gtkrc.mine in ihrem home Verzeichnis (falls sie dort nicht schon existiert) und fügen diese Zeilen hinzu:
536533
537534``` java
538535style "default-text" {
539536 fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
540537 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
541538}
542539
543540class "GtkWidget" style "default-text"
544541```
545542
546543### Wie können meine Programme benutzerdefinierte rc Dateien verwenden?
547544
548545Option a) Nennen sie die rc Datei *yourprogram.gtkrc* und kopieren sie sie in das selbe Verzeichnis wie die ausführbare Datei.
549546
550547Option b) Use unit *GtkInt* and call *GTKWidgetSet.SetRCFilename('your_preferred_rc_file');* Best done before *Application.Initialize* in the .lpr file with *{\$IFDEF LCLGtk}*.
551548
552549### Ich habe Ubuntu und kann wegen fehlender Bibliotheken nicht für GTK2 kompilieren
553550
554551Unter Ubuntu besteht das Problem, dass nicht alle notwendigen symbolischen Links erzeugt werden, wenn die Bibliotheken installiert werden. Überprüfen Sie deshalb, ob die fehlenden Bibliotheken die entsprechenden Links haben. Es kann zum Beispiel sein, dass Sie folgendes tun müssen:
555552
556553``` bash
557554cd /usr/lib
558555sudo ln -s libgdk-x11-2.0.so.0 libgtk-x11-2.0.so
559556```
560557
561558Überprüfen sie, dass die \[was-auch-immer\].so symbolischen Links erzeugt wurden und auf die tatsächlichen Bibliotheken verweisen.
562559
563560### Wie kann ich ein Programm für GTK2 kompilieren?
564561
565562Im Moment ist die GTK2 kompilierte IDE ein wenig instabil, aber sie können Software für GTK2 kompilieren unter Verwendung der GTK1 IDE.
566563
567564Wenn Sie Ihre Software für GTK2 kompilieren möchten, gehen Sie in das Menü "Projekt -\> Compilereinstellungen... -\> Pfade" und ändern die LCL-Schnittstelle auf "GTK2" um.
568565
569566Um die LCL für GTK2 zu kompilieren gehen Sie wie folgt vor: Gehen sie zum Menü "Werkzeuge"-\>""Lazarus erstellen" einrichten..." und setzen LCL erstellen auf clean+build und deaktivieren alles andere ("None"). Wählen Sie als LCL-Schnittstelle GTK2, bestätigen Sie Ihre Einstellungen mit OK.
570567
571568Nun gehen Sie zum Menü "Werkzeuge"-\>"Lazarus erstellen".
572569
573570### Ich erhalte diese Meldung: "\[WARNING\] ** Multibyte character encodings (like UTF8) are not supported at the moment."
574571
575572Seit Revision 10535 (0.9.21) existiert diese Meldung nicht mehr. Bisher wurde sie verwendet, um die Verwendung von UTF-8 Kodierung zu signalisieren. Der Grund war, dass die internen "keyhandling" - Routinen für den gtk1 - "Widgetset" diese Kodierung bei Tastendrücken nicht auswerten konnten. Als Folge davon wurden zum Beispiel Buchstaben mit Akzenten und andere sprachspezifische Sonderzeichen (ß, Ä, ...) falsch oder überhaupt nicht erkannt.
576573
577574(originaler Text für ältere Lazarus Versionen)\
578-<strike> Diese Warnmeldung signalisiert, dass Ihre lokal unterstützten (Schrift-)Zeichen UTF8-kompatibel sind. Bei der Benutzung der LCL-Schnittstelle gtk1 kann dies einige Progleme mit sich führen: Beispielsweise können sprachspezifische Sonderzeichen (ß, Ä, ...) möglicherweise nicht richtig dargestellt werden.
575+Diese Warnmeldung signalisiert, dass Ihre lokal unterstützten (Schrift-)Zeichen UTF8-kompatibel sind. Bei der Benutzung der LCL-Schnittstelle gtk1 kann dies einige Progleme mit sich führen: Beispielsweise können sprachspezifische Sonderzeichen (ß, Ä, ...) möglicherweise nicht richtig dargestellt werden.
579576
580577Um dies zu umgehen können Sie Ihre lokale Einstellung über die Kommandozeile ändern, bevor Sie Lazarus starten. Etwa so:
581578
582579 export LC_CTYPE="pt_BR"
583580 export LANG="pt_BR"
584581 export LANGUAGE="pt_BR"
585582 ./lazarus
586583
587-Ersetzen sie pt_BR durch den Eintrag für ihr Land. Sie können ein Skript erstellen, um dies zu automatisieren. </strike>
584+Ersetzen sie pt_BR durch den Eintrag für ihr Land. Sie können ein Skript erstellen, um dies zu automatisieren.
588585
589586## Windows
590587
591588### When I cycle the compiler, I get:The name specified is not recognized as an internal or external command, operable program or batch file.\>& was unexpected at this time.
592589
593590Im Compilerverzeichnis existiert eine OS2 Scriptdatei mit Namen make.cmd. NT betrachtet diese auch als eine Scriptdatei, daher entfernen sie diese, weil wir sie unter NT nicht brauchen.
594591
595592### When I cycle the compiler, I get: make\[3\]: ./ppc1.exe: Command not found
596593
597594I don't know why but somehow make has lost its path. Try to cycle with a basedir set like: make cycle BASEDIR=your_fpc_source_dir_herecompiler
598595
599596### Wenn ich versuche, Lazarus zu erstellen (make), erhalte ich:
600597
601598#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
602599
603600Sie müssen ihre make Datei upgraden.
604601
605602#### makefile:27: *** Sie benötigen das GNU utils package to use this Makefile. Stop.
606603
607604Stellen sie sicher, dass sie FPC nicht in ein Verzeichnis mit Leerzeichen im Namen installieren. Das Makefile unterstützt das nicht.
608605
609606### Wenn ich versuche, bei CVS einzuloggen, erhalte ich die Meldung: CVS.EXE \[login aborted\]: could not find out home directory
610607
611608Auf einer Windows Plattform muss die HOME Umgebungsvariable ihren (CVS) Benutzernamen und Passwort aufbewahren. In der Kommandozeile geben sie ein:
612609
613610``` bash
614611 SET HOME=C:\MyHome
615612```
616613
617614oder
618615
619616``` bash
620617 SET HOME=C:\WINDOWS
621618```
622619
623620oder
624621
625622``` bash
626623 SET HOME=C:\WINDOWS\Profiles\YourLoginName
627624```
628625
629626oder jeden anderen Ort, den sie wünschen.
630627
631628Inzwischen erfolgte die Umstellung auf SVN (http://svn.freepascal.org/svn/lazarus/trunk_lazarus). Die CVS Daten werden nicht mehr aktualisiert und sollten daher nicht verwendet werden.
632629
633630### Wie kann ich meinem Programm einen XP Look geben wie Lazarus ihn hat?
634631
635632Aktivieren sie die Einstellung unter Projekt -\> Projekteinstellungen -\> Themen mit Manifest-Datei einschalten.
636633
637634## macOS
638635
639636### Ich erhalte einen Fehler während des Linken, der besagt, dass /usr/bin/ld nicht -l\<some lib\> finden kann
640637
641638Sie müssen die Bibliothek mit dem angegebenen Namen installieren und den Pfad zu ihr angeben. Ergänzen sie z.B. -Fl/usr/local/lib in fpc.cfg oder ihrem Lazarus Bibliothekspfad. Der Pfad zu einer Bibliothek hängt sehr davon ab, wie sie installiert wurde. Der Standard für fink ist /sw/lib, für MacPorts /opt/lib oder /opt/local/lib. Viele andere werden in /usr/local/lib installiert. Eine Besonderheit von macOS sind Frameworks. Die systemeigenen sind in /System/Library/Frameworks. Linken gegen diese Frameworks (z.B. OpenGL) erreicht man mit "-k-framework -kOpenGL". FPC reicht dann "-framework OpenGL" an den Linker weiter.
642639
643640### Warum schlägt die Kompilierung eines Projekts fehl mit 'unknown section attribute: no_dead_strip'?
644641
645642Dead code stripping wird vom Assembler und Linker erst ab Tiger 10.4.0 unterstützt. Deaktivieren sie die Compileroptionen, wenn sie eine frühere Version verwenden.
646643
647644- Quelltext \> Unit-Stil \> Smart-Linkbar (-CX)
648645- und Linken \> Linker-Stil \> Smart Linken (-XX)
649646
650647## Lizenzierung
651648
652649### Kann ich kommerzielle Anwendungen mit Lazarus erstellen ?
653650
654651Ja, die LCL ist unter der LGPL lizensiert mit einer Ausnahme, die erlaubt, statisch gegen sie zu linken, ohne den Quelltext der Applikation freizugeben. Modifikationen und Verbesserungen der LCL müssen mit dem Quellcode ausgeliefert werden. Lazarus, die IDE, ist lizenziert unter der GPL. Die LCL besteht ausschließlich aus dem Quellcode in dem gleichnamigen Ordner "lcl".
655652
656653### Warum sind nicht alle Komponenten für kommerzielle Anwendungen erlaubt ?
657654
658655Einige der Komponenten die mit Lazarus installiert werden, sind das Eigentum Dritter. Solche Komponenten unterliegen den Lizenzvereinbarungen die durch den jeweiligen Dritten verfügt wurden. Die Lizenzvereinbarungen im Detail sind den jeweiligen Quelltext-Dateien zu entnehmen. Solche Komponenten sind weitestgehend im Verzeichnis "components" gesammelt.
659656
660657### Wie kann ich feststellen ob eine Komponente zur LCL gehört ?
661658
662659Alle zur LCL gehörenden Dateien befinden sich im Ordner "lcl". Eine Liste der entsprechenden Pascal Units befindet sich hier: <http://lazarus-ccr.sourceforge.net/docs/lcl/> . Sollte Ihre Anwendung andere Units referenzieren ist es wahrscheinlich, dass Sie Komponenten außerhalb der LCL verwenden.
663660
664661### Can I make commercial plug-ins for Lazarus ?
665662
666663Yes, the IDEIntf part of the IDE is licensed under the LGPL with the same exception, so that shared data structures in this part will not force you to license your plug-in or design-time package under the GPL. You are free to choose a plug-in of any license; we don't want to limit your choice. Therefore non-GPL compatible plug-ins are allowed. Note that it's not allowed to distribute a precompiled Lazarus with these non-GPL-compatible plugins included statically; however, we do not see this as a severe limitation, since recompiling Lazarus is easy.
667664
668665## Mitwirkende und Kommentare
669666
670667Diese Seite wurde von der epikwiki [Version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq) konvertiert.
671668
672669---
673670*From the Free Pascal wiki, page "Lazarus Faq/de", as it stood on 2020-02-18 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history