Sign in Join
Wiki copytemporary

Lazarus Faq/de: what changed

Revision 2 to 3. 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
3535![](/wiki-images/d/de/Lazarus_vs_cpp.png)
3636
3737### Warum ist das Linken unter Windows so langsam?
3838
3939Im 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.
4040
4141Seitdem 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]]
4242
4343Dieses 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.
4444
4545Ein 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.
4646
4747Aber was kann man bis dahin machen, um den Linkvorgang zu beschleunigen? - Sie haben zwei Möglichkeiten:
4848
49491. 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.
50502. 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".
5151
5252Nach diesen Einstellungen ist das Smartlinking deaktiviert. Vorteil: Das Linken erfolgt schneller; Nachteil: Die ausführbaren Dateien werden größer.
5353
5454### Brauche ich ppc386.cfg oder fpc.cfg?
5555
5656Sie brauchen nur fpc.cfg. Auf diese Weise kann der Compiler die Bibliotheken finden.
5757
5858### Wie kompiliere ich Lazarus?
5959
6060Sie können Lazarus kompilieren, indem Sie von Ihrer Konsole aus zunächst in das Verzeichnis von Lazarus wechseln, beispielsweise:
6161
6262``` bash
6363$ cd lazarus
6464```
6565
6666Und anschließend den folgenden Befehl eingeben:
6767
6868``` bash
6969$ make clean all
7070```
7171
7272### Wie erzeuge ich andere Projekte basierend auf der LCL?
7373
7474Wenn 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:
7575
76-`  # searchpath for other toolkits (Linux)`\
77-`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{YourToolKit}`
76+```text
77+ # searchpath for other toolkits (Linux)
78+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{YourToolKit}
79+```
7880
79-`  # searchpath for other toolkits (Windows)`\
80-` -Fu/{YourLazarusDirectory}/components/units/{YourToolKit}`
81+```text
82+ # searchpath for other toolkits (Windows)
83+ -Fu/{YourLazarusDirectory}/components/units/{YourToolKit}
84+```
8185
8286
8387Wobei {YourToolKit} *gtk2*, *gnome*, *qt* oder *win32* sein kann. Danach führen sie bitte folgendes aus:
8488
8589
8690ppc386 your.project.pp
8791
8892**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.
8993
9094### Welche Version von FPC wird benötigt?
9195
92962.2.2 auf allen unterstützten Systemen
9397
9498### Ich kann Lazarus nicht kompilieren.
9599
961001. Prüfen Sie, ob der Compiler die richtige Version hat.
971012. Prüfen Sie, ob die (fpc) Bibliotheken (libraries) dieselbe Version haben.
981023. Prüfen Sie, ob Sie die fpc.cfg haben und nicht die alte ppc386.cfg.
991034. Prüfen Sie auch die für ihr Betriebssystem spezifischen FAQs.
1001045. Prüfen Sie, wenn sie das Projekt schonmal kompiliert haben ob die kompilierte Version nicht schon läuft.
1011056. Speichern Sie das Projekt. (War bei meinem Laptop unter W. XP nötig(v.0.9.27))
102106
103107### Wenn ich versuche, ein Projekt zu kompilieren, bekomme ich eine Fehlermeldung:
104108
105109#### "Cannot find Unit interfaces" (Kann Unit interfaces nicht finden). Wie kann ich das Problem lösen?
106110
107111Dies bedeutet, dass der Compiler die Datei 'interfaces.ppu' nicht finden kann **oder** er eine findet, die falsch oder veraltet ist.
108112
109113Die Unit findet man in {LazarusDir}\lcl\units\\{TargetCPU}-{TargetOS}\\{LCLWidgetSet}\interfaces.ppu. Zum Beispiel: /home/Benutzername/lazarus/lcl/units/i386-linux/gtk/interfaces.ppu.
110114
111115Stellen 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.
112116
113117Wenn sie ein anderes Widgetset ausgewählt haben, dann müssen sie die LCL für dieses Widgetset erzeugen, um Lazarus zu erzeugen.
114118
115119Wenn 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:
116120
117121- 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".
118122- Ä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!!
119123
120124### 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 ?
121125
122126Lazarus (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:
123127
124128- 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.
125129- Erzeugen sie eine Datei mit lazres (in lazarus/tools): lazres yourform.lrs yourform.lfm
126130- Fügen sie den folgenden "initialization"-Abschnitt hinzu
127131
128132``` pascal
129133initialization
130134 {$I yourform.lrs}
131135```
132136
133137Beachten sie, dass nicht alle Eigenschaften in der dfm Datei von Lazarus unterstützt werden (bis jetzt), daher könnten sie einen Absturz erhalten.
134138
135139#### 'Identifier not found LazarusResources'.
136140
137141Wenn 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.
138142
139143### Wenn Ereignisse von Objekten angesteuert werden z.B. das OnClick-Ereignis einer Schaltfläche, erhalte ich die folgende Fehlermeldung: ERROR unit not found: stdCtrls
140144
141145Stellen sie unter Projekt -\> Projektinspektor sicher, dass ihr Projekt auf dem Package 'LCL' beruht und dass sie die FPC-Quellen installiert haben.
142146
143147Lazarus 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.
144148
145149Der FPC-Quellenpfad kann gesetzt werden mittels: Einstellungen -\> Umgebungseinstellungen -\> Dateien -\> FPC-Quelltextverzeichnis
146150
147151### 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?
148152
149153Zum Beispiel:
150154
151155``` bash
152156/ihr/Lazarus/Pfad/tools/lazres sound.lrs sound1.wav sound2.wav ...
153157```
154158
155159wird sound.lrs aus sound1.wav und sound2.wav erzeugen.
156160
157161Dann fügen sie es hinter der Formular lrs Datei ein:
158162
159163``` pascal
160164 ...
161165 initialization
162166 {$i unit1.lrs} // this is main resource file (zuerst)
163167 {$i sound.lrs} // user defined resource file
164168
165169 end.
166170```
167171
168172In ihrem Programm können sie dann verwenden:
169173
170174``` pascal
171175 Sound1AsString := LazarusResources.Find('sound1').Value;
172176```
173177
174178### Wie kann ich die Debug-Ausgabe sehen?
175179
176180Die LCL stellt in der Unit LCLproc Prozeduren bereit, um Debug-Ausgaben zu machen:
177181
178182- **DebugLn:** arbeitet genau wie WriteLn, akzeptiert aber nur strings.
179183- **DbgOut:** arbeitet genau wie Write, akzeptiert aber nur strings.
180184
181185Unter 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.
182186
183187Die 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.
184188
185189Wenn 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:
186190
187191``` bash
188192set lazarus_debuglog=c:\lazarus\debug.txt
189193```
190194
191195Wird die Debug-Ausgabe nach c:\lazarus\debug.txt geschrieben.
192196
193197Jede Applikation, die LCLProc benutzt, kann diese Funktionalität benutzen.
194198
195199Lazarus Debuggen
196200Ä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.
197201
198202### Welche Bedeutung haben die verschiedenen von Lazarus verwendeten Dateierweiterungen?
199203
200204Das [[Lazarus Tutorial]] erläutert einige Erweiterungen anhand eines Beispiels. Hier ist eine kurze Auflistung:
201205
202206`*.lpi`
203207Lazarus Project Information Datei (XML Format; enthält projekt-spezifische Einstellungen wie Compilereinstellungen und benötigte Packages)
204208
205209`*.lps`
206210Lazarus Program Session file; stored in XML; contains personal data like cursor positions, source editor files, personal build modes
207211
208212`*.lpr`
209213Lazarus Programm Datei; enthält den Pascal-Quelltext des Hauptprogramms
210214
211215`*.lfm`
212216Lazarus 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)
213217
214218`*.pas` oder `*.pp` oder `*.p`
215219Unit mit Pascal-Code (typischerweise für eine Form, gespeichert in einer entsprechenden `*.lfm` Datei)
216220
217221`*.lrs`
218222Lazarus-Ressourcen-Datei (dies ist eine erzeugte Datei; nicht zu verwechseln mit einer Windows-Ressourcen-Datei).
219223
220224Diese Datei kann erzeugt werden mit dem lazres-Werkzeug (im Verzeichnis Lazarus/Tools) und folgender Kommandozeile: lazres myfile.lrs myfile.lfm
221225
222226`*.ppu`
223227Kompilierte Unit, vom FreePascal Compiler für jede Unit und Programm erzeugt.
224228
225229`*.o`
226230Objekt-Datei, erzeugt vom Compiler, für jede ppu Datei gibt es eine korrespondierende o Datei, vom Linker benötigt.
227231
228232`*.lpk`
229233Lazarus package information Datei. (XML Format; enthält Package-spezifische Einstellungen wie Compilereinstellungen und benötigte Packages)
230234
231235`*.lrt`
232236Lazarus 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.
233237
234238`*.rst`
235239Resourcestring table file. created by the compiler for every unit with a resourcestring section. Do not edit them, they are overwritten.
236240
237241`*.po`
238242gnu gettext messages file. When i18n is enabled the IDE creates/updated the .po files with the resourcestrings from the rst and lrt files.
239243
240244### Ich habe Lazarus repariert/erweitert. Wie kann ich meine Änderungen zu den offiziellen Lazarus Quellen hinzufügen?
241245
242246Erzeugen sie einen Patch und senden sie ihn an die Entwickler. Für Details siehe [[Creating A Patch/de|Creating A Patch]].
243247
244248### 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?
245249
246250Der 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:
247251
248252``` pascal
249253var
250254 MyTextFile: TextFile;
251255```
252256
253257Alternativ kann man die zum Typ Text gehörende Unit in die Definition mit aufnehmen:
254258
255259``` pascal
256260var
257261 MyTextFile: System.Text;
258262```
259263
260264Ä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.
261265
262266### Ich erhalte eine Fehlermeldung bei der Verwendung von Printer.BeginDoc
263267
264268Die Unit Printers muss zum Abschnitt uses hinzugefügt werden.
265269
266270Das Package *Printer4Lazarus* muss zu den Projektvoraussetzungen in der IDE hinzugefügt werden: Projekt -\> Projektinspektor -\> Hinzufügen -\> Neue Anforderung -\> Package-Name:
267271
268272Falls 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
269273
270274\[Lazarus Installationsverzeichnis\]\components\printers
271275
272276Wenn sie die Vorgabeinstallationsverzeichnisse verwendet haben, ist das Lazarus Installationsverzeichnis unter:
273277
274278- Windows: c:\lazarus
275279- Linux: /usr/lib/lazarus
276280
277281### Wie kann ich ein Lazarus-Entwickler werden und Zugang zu SVN und dem Bug-tracker erhalten?
278282
279283Voraussetzung: 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).
280284
281285## Wo ist ... definiert?
282286
283287### Virtual key constants
284288
285289Virtual key constants sind definiert in [[doc:lcl/lcltype|LCLType]]. Fügen sie LCLtype zu ihrem uses-Abschnitt hinzu.
286290
287291## Nutzung der IDE
288292
289293### Wie kann ich die "Automatische Vervollständigung (identifier completion)" nutzen?
290294
291295Sie 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.
292296
293297### Lazarus-IDE mit andockbaren Fenster
294298
295299Eine 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:
296300
297301- *"Package --\> Installierte Package einrichten... --\> Verfügbar für Installation"* - *anchordockingdsgn x.x* wählen.
298302- `Auswahl installieren`
299303- `Speichern und IDE rekompilieren`
300304- `Fortsetzen`
301305- IDE wird nun kompiliert
302306- Nach dem Neustart: *"Werkzeuge --\> Einstellungen... --\> Umgebung --\> Docking / Anchordocking"* - Docking den Bedürfnissen anpassen. `Ok`
303307
304308 +-------------------++--+
305309 |Menü || |
306310 +-------------------+| |
307311 +--++---------------+| |
308312 |PI|| Quelltext- ||CE|
309313 +--+| editor || |
310314 +--+| || |
311315 | |+---------------++--+
312316 |OI|+-------------------+
313317 | ||Nachrichten |
314318 +--++-------------------+
315319
316320## Linux
317321
318322### Wie kann ich unter Linux ohne die IDE debuggen?
319323
320324Zuerst 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:
321325
322326``` bash
323327$ make clean; make OPT=-dDEBUG
324328$ ddd lazarus
325329```
326330
327331Seien 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.
328332
329333### Ich kann jetzt debuggen, aber ddd findet meine Quellen nicht oder reklamiert, dass sie keinen Code enthalten. Was ist das?
330334
331335Dies ist ein Pfad-bezogenes Problem entweder mit gdb oder ddd. Sie können dies vermeiden durch
332336
333337- 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.
334338- In ddd gehen sie zu \[Edit\] \[gdb-settings\] und setzen den Suchpfad
335339- Erstellen einer \$(HOME)/.gdbinit Datei wie:
336340
337-`     directory /your/path/to/lazarus`\
338-`     directory /your/path/to/lazarus/lcl`\
339-`     directory /your/path/to/lazarus/lcl/include`
341+```text
342+ directory /your/path/to/lazarus
343+ directory /your/path/to/lazarus/lcl
344+ directory /your/path/to/lazarus/lcl/include
345+```
340346
341347### Ich erhalte einen Fehler während des Linken der besagt, dass /usr/bin/ld nicht -l\<some lib\> finden kann
342348
343349**Package basierte Distributionen**
344350Sie 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.
345351
346352**Source Based Distributionen und manuelle Kompilierung (LFS)**
347353Stellen 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).
348354
349355**FreeBSD**
350356Wie 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)
351357
352358**NetBSD**
353359Wie bei sourcebasierten Distributionen. Stellen sie außerdem sicher, dass sie -Fl/usr/pkg/lib in ihrer fpc.cfg und/oder ihrem Lazarus Bibliothekspfad haben.
354360
355361### Wie kann ich ein Kylix 2 Projekt in ein Lazarus Projekt konvertieren?
356362
357363Beinahe auf die selbe Weise wie man ein Kylix Projekt in ein Delphi/VCL Projekt konvertiert.
358364
359365Die LCL (Lazarus Component Library) versucht kompatibel zu Delphis VCL zu sein. Kylix CLX versucht kompatibel zu QT sein. Hier sind einige allgemeine Hinweise:
360366
361367- Benennen sie alle benutzten CLX Q-Units wie QForms, QControls, QGraphics, ... in ihre VCL Entsprechungen: Forms, Controls, Graphics, ... um.
362368- Fügen sie LResources zum uses-Abschnitt jeder Formularquelle hinzu.
363369- Benennen sie alle .xfm Dateien in .lfm Dateien um oder kopieren sie sie.
364370- Benennen sie die .dpr Dateien in .lpr Dateien um oder kopieren sie sie.
365371- Entfernen sie die {\$R *.res} Direktive.
366372- Entfernen sie die {\$R *.xfm} Direktive.
367373- Fügen sie die {\$mode objfpc}{\$H+} oder {\$mode delphi}{\$H+} Direktive zu den .pas und .lpr Dateien hinzu.
368374- Fügen sie einen initialization-Abschnitt am Ende jeder Formularquelle hinzu und auch eine include Direktive für die .lrs Datei (lazarus resource file):
369375
370376``` pascal
371377initialization
372378 {$I unit1.lrs}
373379```
374380
375381
376382Die .lrs Dateien können erzeugt werden mit dem lazres Tool in: (lazarusdir)/tools/lazres.
377383
378384Zum Beispiel: ./lazres unit1.lrs unit1.lfm
379385
380386- Fix the differences. Die LCL unterstützt noch nicht jede Eigenschaft der VCL und die CLX ist nicht völlig VCL kompatibel.
381387- 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)
382388
383389### 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)
384390
3853911\. Testen sie einen sauberen Neuaufbau: benutzen sie 'make clean all'
386392
3873932\. Prüfen sie, ob der Compiler die richtige Version hat (z.B. 2.0.4)
388394
3893953\. 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.
390396
391397
392398**Hinweis:** Sie können mit 'ppc386 -vt bogus' sehen, welche Konfigurationsdatei verwendet wird.
393399
3944004\. 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:
395401
396-`   -Fu/usr/lib/fpc/$version/units/$target`\
397-`   -Fu/usr/lib/fpc/$version/units/$target/*`\
398-`   -Fu/usr/lib/fpc/$version/units/$target/rtl`
402+```text
403+ -Fu/usr/lib/fpc/$version/units/$target
404+ -Fu/usr/lib/fpc/$version/units/$target/*
405+ -Fu/usr/lib/fpc/$version/units/$target/rtl
406+```
399407
400408
401409Der 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.
402410
403411**Hinweis:** Sie können ihre Suchpfade mit 'ppc386 -vt bogus' sehen.
404412
4054135\. Prüfen sie, dass die Konfigurationsdatei (/etc/fpc.cfg) keine Suchpfade zu den den LCL Quelldateien (.pp, .pas) enthält:
406414
407-` verboten: -Fu(lazarus_source_directory)/lcl`\
408-` verboten: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
415+```text
416+ verboten: -Fu(lazarus_source_directory)/lcl
417+ verboten: -Fu(lazarus_source_directory)/lcl/interfaces/gtk
418+```
409419
410420
411421Wenn 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:
412422
413-` -Fu(lazarus_source_directory)/lcl/units`\
414-` -Fu(lazarus_source_directory)/lcl/units/gtk`
423+```text
424+ -Fu(lazarus_source_directory)/lcl/units
425+ -Fu(lazarus_source_directory)/lcl/units/gtk
426+```
415427
4164286\. 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.
417429
4184307\. 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.
419431
4204328\. Sollte dies immer noch nicht zum Erfolg führen, versuchen sie das samplecfg-Skript auszuführen:
421433
422434*\#* cd /usr/lib/fpc/*version*/
423435
424436*\#* sudo ./samplecfg /usr/lib/fpc/*\\\$version* /etc
425437
426438Anmerkung! 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.
427439
428440### Ich habe die binäre Version installiert, aber wenn ein einfaches Projekt kompiliert wird, meldet Lazarus: Fatal: Can't find unit CONTROLS
429441
430442Wahrscheinlich 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):
431443
432444``` bash
433445 $ bash
434446 $ export CVSROOT=:pserver:cvs@cvs.freepascal.org:/FPC/CVS
435447 $ cvs login
436448 # Hint: The password is '''''cvs''''' (lowercase).
437449 # Hint 2 : Of course, "cvs" is not the correct password, what did you expect ?
438450 # see [[Getting_Lazarus#Using_the_command_line]]
439451 $ cvs -z3 checkout lazarus
440452 $ cd lazarus
441453 $ make
442454```
443455
444456Stellen sie sicher, dass Lazarus das neue Quellenverzeichnis erhält: Werkzeuge -\> Einstellungen -\> Umgebung -\> Dateien
445457
446458### Lazarus kompiliert, aber das Linken schlägt fehl mit: libgdk-pixbuf not found
447459
448460Entweder installieren sie die gdk-pixbuf Bibliothek für GTK1.x oder unterdrücken die Verwendung.
449461
450462Wo ist die gdk-pixbuf Bibliothek zu finden:
451463
452464RPMs: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
453465
454466Debian Packages: libgdk-pixbuf-dev
455467
456468Quellen: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
457469
458470Wie 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".
459471
460472### Ich habe SuSE und ich erhalte /usr/bin/ld: cannot find -lgtk Error: Error while linking
461473
462474SuSE 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).
463475
464476### Lazarus stürzt mit Laufzeitfehler 211 ab, nachdem ich eine Komponente installiert habe
465477
466478Nachdem ich eine Komponente installiert habe, stürzt Lazarus mit folgender Meldung ab:
467479
468-`Threading has been used before cthreads was initialized.`\
469-`Make cthreads one of the first units in your uses clause.`\
470-`Runtime error 211 at $0066E188`
480+``` pascal
481+Threading has been used before cthreads was initialized.
482+Make cthreads one of the first units in your uses clause.
483+Runtime error 211 at $0066E188
484+```
471485
472486WIe kann der Fehler behoben werden?
473487
474488Ihre 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.
475489
476490Es gibt 2 Wege, wie man Threading unter *nix aktiviert:
477491
4784921\) 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.
479493
4804942\) 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.
481495
482496*Hint:* Maybe your old (non-crashing) lazarus executable is stored as lazarus.old in the same directory as the crashing lazarus executable.
483497
484498Siehe auch [[Multithreaded Application Tutorial|Multithreaded_Application_Tutorial#Units_needed_for_a_multithreaded_application]]
485499
486500### Wenn ich ein Programm mit Threads starte erhalte ich den Laufzeitfehler 232
487501
488502Die vollständige Fehlermeldung lautet:
489503
490-`This binary has no thread support compiled in.`\
491-`Recompile the application with a thread-driver in the program uses`\
492-`clause before other units using thread.`\
493-`Runtime error 232`
504+``` pascal
505+This binary has no thread support compiled in.
506+Recompile the application with a thread-driver in the program uses
507+clause before other units using thread.
508+Runtime error 232
509+```
494510
495511**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).
496512
497513Project1.lpr könnte dann in etwa so aussehen:
498514
499515``` pascal
500516program project1;
501517
502518{$mode objfpc}{$H+}
503519{$define UseCThreads}
504520
505521uses
506522 {$IFDEF UNIX}{$IFDEF UseCThreads}
507523 cthreads,
508524 {$ENDIF}{$ENDIF}
509525 Interfaces, // this includes the LCL widgetset
510526 Forms, unit1
511527 { you can add units after this };
512528```
513529
514530oder so:
515531
516532``` pascal
517533program project1;
518534
519535{$mode objfpc}{$H+}
520536
521537uses
522538 {$IFDEF UNIX}
523539 cthreads,
524540 {$ENDIF}
525541 Interfaces, // this includes the LCL widgetset
526542 Forms, unit1
527543 { you can add units after this };
528544```
529545
530546### Ich habe Ubuntu Breezy und meine Fonts in der Lazarus IDE sind zu groß
531547
532548Falls 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:
533549
534550``` java
535551style "default-text" {
536552 fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
537553 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
538554}
539555
540556class "GtkWidget" style "default-text"
541557```
542558
543559### Wie können meine Programme benutzerdefinierte rc Dateien verwenden?
544560
545561Option a) Nennen sie die rc Datei *yourprogram.gtkrc* und kopieren sie sie in das selbe Verzeichnis wie die ausführbare Datei.
546562
547563Option b) Use unit *GtkInt* and call *GTKWidgetSet.SetRCFilename('your_preferred_rc_file');* Best done before *Application.Initialize* in the .lpr file with *{\$IFDEF LCLGtk}*.
548564
549565### Ich habe Ubuntu und kann wegen fehlender Bibliotheken nicht für GTK2 kompilieren
550566
551567Unter 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:
552568
553569``` bash
554570cd /usr/lib
555571sudo ln -s libgdk-x11-2.0.so.0 libgtk-x11-2.0.so
556572```
557573
558574Überprüfen sie, dass die \[was-auch-immer\].so symbolischen Links erzeugt wurden und auf die tatsächlichen Bibliotheken verweisen.
559575
560576### Wie kann ich ein Programm für GTK2 kompilieren?
561577
562578Im Moment ist die GTK2 kompilierte IDE ein wenig instabil, aber sie können Software für GTK2 kompilieren unter Verwendung der GTK1 IDE.
563579
564580Wenn 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.
565581
566582Um 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.
567583
568584Nun gehen Sie zum Menü "Werkzeuge"-\>"Lazarus erstellen".
569585
570586### Ich erhalte diese Meldung: "\[WARNING\] ** Multibyte character encodings (like UTF8) are not supported at the moment."
571587
572588Seit 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.
573589
574590(originaler Text für ältere Lazarus Versionen)\
575591Diese 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.
576592
577593Um dies zu umgehen können Sie Ihre lokale Einstellung über die Kommandozeile ändern, bevor Sie Lazarus starten. Etwa so:
578594
579595 export LC_CTYPE="pt_BR"
580596 export LANG="pt_BR"
581597 export LANGUAGE="pt_BR"
582598 ./lazarus
583599
584600Ersetzen sie pt_BR durch den Eintrag für ihr Land. Sie können ein Skript erstellen, um dies zu automatisieren.
585601
586602## Windows
587603
588604### 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.
589605
590606Im 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.
591607
592608### When I cycle the compiler, I get: make\[3\]: ./ppc1.exe: Command not found
593609
594610I 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
595611
596612### Wenn ich versuche, Lazarus zu erstellen (make), erhalte ich:
597613
598614#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
599615
600616Sie müssen ihre make Datei upgraden.
601617
602618#### makefile:27: *** Sie benötigen das GNU utils package to use this Makefile. Stop.
603619
604620Stellen sie sicher, dass sie FPC nicht in ein Verzeichnis mit Leerzeichen im Namen installieren. Das Makefile unterstützt das nicht.
605621
606622### Wenn ich versuche, bei CVS einzuloggen, erhalte ich die Meldung: CVS.EXE \[login aborted\]: could not find out home directory
607623
608624Auf einer Windows Plattform muss die HOME Umgebungsvariable ihren (CVS) Benutzernamen und Passwort aufbewahren. In der Kommandozeile geben sie ein:
609625
610626``` bash
611627 SET HOME=C:\MyHome
612628```
613629
614630oder
615631
616632``` bash
617633 SET HOME=C:\WINDOWS
618634```
619635
620636oder
621637
622638``` bash
623639 SET HOME=C:\WINDOWS\Profiles\YourLoginName
624640```
625641
626642oder jeden anderen Ort, den sie wünschen.
627643
628644Inzwischen 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.
629645
630646### Wie kann ich meinem Programm einen XP Look geben wie Lazarus ihn hat?
631647
632648Aktivieren sie die Einstellung unter Projekt -\> Projekteinstellungen -\> Themen mit Manifest-Datei einschalten.
633649
634650## macOS
635651
636652### Ich erhalte einen Fehler während des Linken, der besagt, dass /usr/bin/ld nicht -l\<some lib\> finden kann
637653
638654Sie 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.
639655
640656### Warum schlägt die Kompilierung eines Projekts fehl mit 'unknown section attribute: no_dead_strip'?
641657
642658Dead 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.
643659
644660- Quelltext \> Unit-Stil \> Smart-Linkbar (-CX)
645661- und Linken \> Linker-Stil \> Smart Linken (-XX)
646662
647663## Lizenzierung
648664
649665### Kann ich kommerzielle Anwendungen mit Lazarus erstellen ?
650666
651667Ja, 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".
652668
653669### Warum sind nicht alle Komponenten für kommerzielle Anwendungen erlaubt ?
654670
655671Einige 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.
656672
657673### Wie kann ich feststellen ob eine Komponente zur LCL gehört ?
658674
659675Alle 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.
660676
661677### Can I make commercial plug-ins for Lazarus ?
662678
663679Yes, 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.
664680
665681## Mitwirkende und Kommentare
666682
667683Diese Seite wurde von der epikwiki [Version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq) konvertiert.
668684
669685---
670686*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