Lazarus Faq/de

From Lazarus wiki
Jump to navigationJump to search

العربية (ar) Deutsch (de) English (en) español (es) français (fr) magyar (hu) italiano (it) 日本語 (ja) 한국어 (ko) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)

Allgemein

Wo kann ich weitere FAQs finden?

Besuchen Sie die offizielle Webseite www.lazarus.freepascal.org . Dort gibt es eine weitere FAQ.

Warum sind die generierten binaries so groß?

Die Binaries sind groß weil sie eine Menge von Debug Informationen enthalten, die für die Verwendung von gdb (GNU Debugger) notwendig sind.

Der 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. Dies wurde in der Entwicklerversion des Compilers bereinigt.

Sie 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 Komandozeile aus starten.

Tippen sie einfach "strip --strip-all <ihr Executable mit Pfad>" auf der Kommandozeile.

Wenn sie ihr Programm noch kleiner machen wollen, sollten sie auch UPX ([1]) 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, welche 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.

Um UPX zu verwenden tippen sie einfach "upx <ihre ausführbare Datei mit Pfad>" in die Kommandozeile.

Nach der Verwendung von strip und UPX erreicht ein einfaches GUI Lazarus Programm:

  • ~ 700kb unter Linux
  • ~ 420kb unter Windows

Eine detailliertere Antwort wird auf Size Matters gegeben.

Hinsichtlich 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:

  • Eine Bibliothek zur Handhabe von XML
  • Bibliotheken um mit Bildformaten wie png, xpm, bmp und ico umzugehen
  • Die ganze Bandbreite der Lazarus Komponenten-Bibliothek (LCL)
  • Die komplette Free Pascal Laufzeitumgebung (RTL)

Man 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.

Mit 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 Maschienensprache übersetzt. Das folgende Schaubild soll den Umstand veranschaulichen:

Lazarus vs cpp.png

Warum ist das Linken so langsam unter Windows?

Im 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.

Seit dem 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

Dieses Problem betrifft jedoch nur Windows, und tritt vor allem auf relativ alten Computern (weniger als 1Ghz) und Computer mit wenig RAM (128MB oder weniger) in Erscheinung.

Ein interner Linker ist in Entwicklung. Er sollte dieses Problem lösen, aber es wird noch einige Zeit dauern, bis er einsatzbereit ist.

Aber was kann man bis dahin machen, um den Linkvorgang zu beschleunigen? - Sie haben zwei Möglichkeiten:

  1. 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.
  2. 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 aof OK. Gehen sie jetzt zu "Werkzeuge" -> "Lazarus erstellen".

Nach diesen Einstellungen ist das Smartlinking deaktiviert. Vorteil: Das Linken geschieht schneller; Nachteil: Die ausführbaren Dateien werden größer.

Wichtiger Hinweis: Do not do it if you are using Windows 95 or 98; lazarus will not be able to compile or, if it compiles, your executables will not be able to run. In these systems it appears that you must stick to the default smartlinking.

Anmerkung: In 2.1.1 Windows uses an internal linker for win32/64/ce which speeds the process up a bit. A Lazarus recompile then eats about 280MB.

Brauche ich ppc386.cfg oder fpc.cfg?

Sie brauchen nur fpc.cfg. Auf diese Weise kann der Compiler die Bibliotheken finden.

Wie kompiliere ich Lazarus?

Sie können Lazarus kompilieren, indem Sie von Ihrer Konsole aus zunächst in das Verzeichnis von Lazarus wechseln, beispielsweise:

$ cd lazarus

Und anschließend den folgenden Befehl eingeben:

$ make clean all

Wie erzeuge ich andere Projekte basierend auf der LCL?

Fügen Sie die folgenden Zeilen am Ende ihrer fpc.cfg ein

  1. Hinzufügen der Lazarus Bibliotheken
 -Fu/your.lazarus.root/lcl/units
 -Fu/your.lazarus.root/lcl/units/{YourToolKit}
 -Fu/your.lazarus.root/components/units
 -Fu/your.lazarus.root/components/units/{YourToolKit}
    1. Wenn ihre LCL-Schnittstelle GTK, Gnome oder Win32 ist, starten Sie:
ppc386 your.project.pp

Welche Version von FPC wird benötigt?

Da inzwischen die FPC Version 2.0.4 erschienen ist, sollten ältere Versionen (1.x.x) nicht mehr verwendet werden. Die URL ist im Downloadbereich dieser Version zu finden.

Ich kann Lazarus nicht kompilieren.

  1. Prüfen Sie, ob der Compiler die richtige Version hat.
  2. Prüfen Sie, ob die (fpc) Bibliotheken (libraries) dieselbe Version haben.
  3. Prüfen Sie, ob Sie die fpc.cfg haben und nicht die alte ppc386.cfg.
  4. Prüfen Sie auch die betriebssystemabhängigen FAQs.

Wenn ich versuche, ein Projekt zu kompilieren, bekomme ich folgende Fehlermeldung: "Cannot find Unit interfaces" ("Kann Unit interfaces nicht finden"). Wie kann ich das Problem lösen?

Die kompilierte Unit ist zu finden in {LazarusDir}\lcl\units\{TargetCPU}\{TargetOS}\{LCLWidgetSet}\interfaces.ppu.

Stellen sie sicher, daß 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.

Wenn sie ein anderes Widgetset ausgewählt haben, dann müssen sie die LCL für dieses Widgetset erzeugen, um Lazarus zu erzeugen.

Wenn 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:

  • 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".
  • Ä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, daß es nur eine Version der Compiler Konfigurationsdatei fpc.cfg gibt - sie sollte sich befinden in /etc/ für Linux/Unix Systeme oder in dem selben Verzeichnis wie der FPC Compiler für Windows Systeme. Rogue Kopien schleichen sich oft ein wenn sie ihren Compiler auf ein neuere Version upgedated haben; sie können gefunden werden in ihrem home Verzeichnis oder in den dem selben Verzeichnis , in dem sie ihren neuen Compiler erstellt haben. Löschen sie diese!!

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 ?

Lazarus (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. Sie können noch ihre Delphi Layouts (.dfm Dateien) benutzen, wenn sie die folgenden Schritte einsetzen:

  • 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.
  • Erzeugen sie eine Datei mit lazres (in lazarus/tools): lazres yourform.lrs yourform.lfm
  • Fügen sie den folgenden initialization Anbschnitt hinzu
     initialization
     {$I yourform.lrs}

Beachten sie, daß nicht alle Eigenschaften in der dfm Datei von Lazarus unterstützt werden (bis jetzt), daher könnten sie einen Absturz erhalten.

'Identifier not found LazarusResources'.

Wenn 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 von 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.

Wenn Ereignisse von Objekten angesteuert werden z.B. das OnClick Ereignis einer Schaltfläche, erhalte ich die folgende Fehlermeldung: ERROR unit not found: stdCtrls

Stellen sie sicher, unter Projekt -> Projektinspektor, daß ihr Projekt auf dem Package 'LCL' beruht und daß sie die FPC Quellen installiert haben.

Lazarus 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.

Der FPC Quellen Pfad kann gesetzt werden mittels: Einstellungen -> Umgebungseinstellungen -> Dateien -> FPC-Quelltextverzeichnis

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?

Zum Beispiel:

/ihr/Lazarus/Pfad/tools/lazres sound.lrs sound1.wav sound2.wav ...

wird sound.lrs aus sound1.wav und sound2.wav erzeugen.

Dann fügen sie es hinter der Formular lrs Datei ein:

...
initialization
{$i unit1.lrs} // this is main resource file (zuerst)
{$i sound.lrs} // user defined resource file

end.

In ihrem Programm können sie dann verwenden:

Sound1AsString:=LazarusResources.Find('sound1').Value;

Wie kann ich den debug output sehen?

Die LCL stellt in der Unit LCLproc proceduren bereit, um Debug Ausgaben zu machen:

  • DebugLn: arbeitet genau wie WriteLn, akzeptiert aber nur strings.
  • DbgOut: arbeitet genau wie Write, akzeptiert aber nur strings.

Unter normalen Umständen wird die Ausgabe auf stdout ausgegeben. Wenn stdout geschlossen ist, (zum Beispiel wenn die Anwendung {$AppType Gui} ist oder unter Windows mit -WG kompiliert wurde), wird nichts ausgegeben.

Die 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.

Wenn der parameter nicht übergeben wurde (--debug-log) , wird nach einer Umgebungsvariable gesucht die xxx_debuglog heisst, xxx steht hierbei für den Exenamen 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 Umgebungsvariable. Beispiel: Wenn Sie folgendes tun:

set lazarus_debuglog=c:\lazarus\debug.txt

Wird die Debugausgabe nach c:\lazarus\debug.txt geschrieben.

Jede Applikation die LCLProc benutzt, kann diese Funktionalität benutzen.

Lazarus Debuggen
Äußerst nützlich für Windows: Wen Sie die Ausgabe auf einer console sehen möchten console, fügen sie {$APPTYPE console} zu lazarus.pp hinzu. Dann erstellen sie Lazarus neu.

Was ist die Bedeutung der verschiedenen von Lazarus verwendeten Dateierweiterungen?

Das Lazarus Tutorial#The Lazarus files erläutert einige Erweiterungen anhand eines Beispiels. Hier ist eine kurze Auflistung:

*.lpi
Lazarus Project Information Datei (XML Format; enthält Projekt-spezifische Einstellungen)
*.lpr
Lazarus Programm Datei; enthält den Pascal Quelltext des Hauptprogramms
*.lfm
Lazarus Formular Datei; enthält Konfigurationsinformationen für alle Objekte auf einem Formular (gespeichert in einem Lazarus-spezifischen Format; the actions are described by Pascal source code in a corresponding *.pas file)
*.pas oder *.pp
Unit mit Pascal Code (typically for a form stored in a corresponding *.lfm file)
*.lrs
Lazarus Ressourcen Datei (dies ist eine erzeugte Datei; nicht zu verwechseln mit einer Windows Ressourcen Datei).
Diese Datei kann erzeugt werden mit dem lazres Werkzeug (im Verzeichnis Lazarus/Tools) using commandline: lazres myfile.lrs myfile.lfm
*.ppu
Compilierte Unit
*.lpk
Lazarus package information Datei. (XML Format; enthält Package-spezifische Einstellungen)

Ich habe Lazarus repariert/erweitert. Wie kann ich meine Änderungen zu den offiziellen Lazarus Quellen hinzufügen?

Erzeugen sie einen Patch und senden sie ihn an die Entwickler. Für Details siehe Creating A Patch.

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?

Der Grund für die Fehlermeldung ist: Zum Typ Text gibt es eine gleichnamige Eigenschaft der Klasse TControl: Die TControl Klasse hat eine Text Eigenschaft. Zum Umgang mit Textdateien hingegen wird der Typ Text der unit system benötigt. Aus Gründen der Unterscheidbarkeit müssen Sie daher für den Umgang mit Textdateien den Typ TextFile verwenden. Es handelt sich dabei um ein Pseudonym des Types Text der Unit System. Beispiel:

var
  MyTextFile: TextFile;

Alternativ kann man die zum Typ Text gehörende Unit in die Definition mit aufnehmen:

var
  MyTextFile: System.Text;

Ähnliche Probleme tauchen bei dem Umgang mit Textdateien in Verbindung mit den Befehlen "assign" und "close" auf. TForm hat eine assign und eine Close Methode. Für den Umgang mit Textdatein müssen Sie daher die Pseudonyme AssignFile und CloseFile verwenden oder alternativ dazu den Unitnamen System hinzufügen.

Wo ist ... definiert?

Virtual key constants

Virtual key constants sind definiert in LCLType. Fügen sie LCLtype zu ihrem uses hinzu.

Nutzung der IDE

Wie kann ich die "identifier completion" nutzen?

Sie können die "identifier completion" aufrufen, indem Sie die Tasten [Ctrl][Leertaste] drücken. Unter dem Menüpunkt Einstellungen -> Editoreinstellungen -> CodeTools -> Automatic Features können Sie einstellen, wie schnell dies automatisch passieren soll.

Linux

Wie kann ich unter Linux ohne die IDE debuggen?

Zuerst 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, welches ein Teil 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:

 $ make clean; make OPT=-dDEBUG
 $ ddd lazarus

Seien sie jedoch gewarnt, daß ddd nicht so komfortabel wie z.B. der Lazarus Debugger ist. Specially if it comes to view the contents of a variable müssen sie berücksichtigen, daß ddd/gdb case sensitive sind wohingegen 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.

Ich kann jetzt debuggen, aber ddd findet meine Quellen nicht oder reklamiert, daß sie keinen Code enthalten. Was ist das?

Dies ist ein Pfad-bezogenes Problem entweder mit gdb oder ddd. Sie können dies vermeiden durch

  • Benutzen des "Change directory" Kommandos aus dem ddd Menü und Wahl des Verzeichnisses, wo sich die Quellen befinden. Das Manko dieser Methode ist, daß 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.
  • In ddd gehen sie zu [Edit] [gdb-settings] und setzen den Suchpfad
  • Erstellen einer $(HOME)/.gdbinit Datei wie:
     directory /your/path/to/lazarus
     directory /your/path/to/lazarus/lcl
     directory /your/path/to/lazarus/lcl/include

Ich erhalte einen Fehler während des Linkens der besagt, daß /usr/bin/ld nicht -l<some lib> finden kann

Package basierte Distributionen
Sie 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, welche die .a (static lib) und/oder die .so (dynamic lib) enthalten.
Source Based Distributionen und manuelle Kompilierung (LFS)
Stellen sie sicher, daß es eine lib<somelib>.a im Pfad gibt, und daß 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).
FreeBSD
As source based distro's, and also make sure you have -Fl/usr/local/lib in your fpc.cfg and/or Lazarus library path. Keep in mind that GTK1.2 has "gtk12" as package name under FreeBSD. (same for glib)
NetBSD
As source based distro's, and also make sure you have -Fl/usr/pkg/lib in your fpc.cfg and/or Lazarus library path

Wie kann ich ein Kylix 2 Projekt in ein Lazarus Projekt konvertieren?

Beinahe auf die selbe Weise wie man ein Kylix Projekt in ein Delphi/VCL Projekt konvertiert.

Die LCL (Lazarus Component Library) versucht kompatibel zu Delphis VCL zu sein. Kylix CLX versucht kompatibel zu QT sein. Hier sind einige allgemeine Hinweise:

  • Benennen sie alle benutzten CLX Q-Units wie QForms, QControls, QGraphics, ... in ihre VCL Entsprechungen: Forms, Controls, Graphics, ... um.
  • Fügen sie LResources zum uses Abschnitt jeder Formualer Quelle hinzu.
  • Benennen sie alle .xfm Dateien in .lfm Dateien um oder kopieren sie sie.
  • Benennen sie die .dpr Dateien in .lpr Dateien um oder kopieren sie sie.
  • Entfernen sie die {$R *.res} Direktive.
  • Entfernen sie die {$R *.xfm} Direktive.
  • Fügen sie die {$mode objfpc}{$H+} oder {$mode delphi}{$H+} Direktive zu den .pas und .lpr Dateien hinzu.
  • Fügen sie einen initialization Abschnitt am Ende jeder Formularquelle hinzu und auch eine include Direktive für die .lrs Datei (lazarus resource file):
 initialization
   {$I unit1.lrs}
Die .lrs Dateien können erzeugt werden mit dem lazres Tool in: (lazarusdir)/tools/lazres.
Zum Beispiel: ./lazres unit1.lrs unit1.lfm
  • Fix the differences. Die LCL unterstützt noch nicht jede Eigenschaft der VCL und die CLX ist nicht völlig VCL kompatibel.

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)

1. Testen sie einen sauberen Neuaufbau: benutzen sie 'make clean all'

2. Prüfen sie, ob der Compiler die richtige Version hat (z.B. 2.0.4)

3. 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.

Hinweis: Sie können sehen welche Konfigurationsdatei verwendet wird mit 'ppc386 -vt bogus'

4. Prüfen sie, ob die Konfigurationsdatei (/etc/fpc.cfg) die richtigen Pfade zu ihren FPC Bibliotheken enthält. Dort müssen drei Zeilen sein etwa so:

   -Fu/usr/lib/fpc/$version/units/$target
   -Fu/usr/lib/fpc/$version/units/$target/*
   -Fu/usr/lib/fpc/$version/units/$target/rtl
Der 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.
Hinweis: Sie können ihre Suchpfade sehen mit 'ppc386 -vt bogus'

5. Prüfen sie, daß die Konfigurationsdatei (/etc/fpc.cfg) keine Suchpfade zu den den LCL Quelldateien (.pp, .pas) enthält:

 verboten: -Fu(lazarus_source_directory)/lcl
 verboten: -Fu(lazarus_source_directory)/lcl/interfaces/gtk
Wenn sie die LCL für alle ihre FPC Projekte hinzufügen wollen, stellen sie sicher, daß die zwei Pfade wie die folgenden aussehen und nach den obigen FPC Bibliotheken Pfaden platziert werden:
 -Fu(lazarus_source_directory)/lcl/units
 -Fu(lazarus_source_directory)/lcl/units/gtk

6. Prüfen sie, ob die vermisste Unit (glib.ppu) in ihrem FPC Bibliotheken Verzeichnis existiert. Zum Beispiel die gtk.ppu ist zu finden unter /usr/lib/fpc/$fpcversion/units/linux/gtk/. Wenn sie nicht existiert, ist die FPC Bibliothek beschädigt und sollte neu installiert werden.

7. 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.

Ich habe die binäre Version installiert, aber wenn ein einfaches Projekt kompiliert wird, meldet Lazarus: Fatal: Can't find unit CONTROLS

Wahrscheinlich 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):

 $ bash
 $ export CVSROOT=:pserver:cvs@cvs.freepascal.org:/FPC/CVS
 $ cvs login
 Hint: The password is cvs (lowercase).
 $ cvs -z3 checkout lazarus
 $ cd lazarus
 $ make

Stellen sie sicher, daß Lazarus das neue Quellenverzeichnis erhält: Environment->General Options->Files->Lazarus Directory Top

Lazarus compiles, but linking fails with: libgdk-pixbuf not found Either install the gdk-pixbuf library for gtk1.x or disable the use:

Wo ist die gdk-pixbuf Bibliothek zu finden:

RPMs: http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+...&system=&arch=

Debian packages: libgdk-pixbuf-dev

Quellen: ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/


How to disable the use in lazarus: In Tools->Configure "Build Lazarus" fügen sie die Option '-dNoGdkPixBufLib' hinzu oder auf der Kommandozeile: "make clean all OPT=-dNoGdkPixBufLib".

Ich habe SuSE und ich erhalte /usr/bin/ld: cannot find -lgtk Error: Error while linking

SuSE installiert die GTK Entwickler Bibliotheken unter /opt/gnome/lib, welches nicht im Standard Bibliothekenpfad ist. Fügen sie es einfach zu ihrer /etc/fpc.cfg hinzu. (-Fl/opt/gnome/lib).

Ich habe Ubuntu Breezy und meine fonts in der Lazarus IDE sind zu groß

Falls Lazarus mit GTK1.2 kompiliert ist, haben die Einstellungen in Gnome Preferences/Font keine Auswirkungen, da sie are related to GTK2. 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:

style "default-text" {
       fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
                  -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
}

class "GtkWidget" style "default-text"

Wie kann ich ein Programm für GTK2 kompilieren?

Im Moment ist die GTK2 kompilierte IDE ein wenig instabil, aber sie können Software für GTK2 kompilieren unter Verwendung der GTK1 IDE.

Wenn 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.

Um 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.

Nun gehen Sie zum Menü "Werkzeuge"->"Lazarus erstellen".

Ich erhalte diese Meldung: "[WARNING] ** Multibyte character encodings (like UTF8) are not supported at the moment."

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.

Um dies zu umgehen können Sie Ihre lokale Einstellung über die Komandozeile ändern, bevor Sie Lazarus starten. Etwa so:

export LC_CTYPE="pt_BR"
export LANG="pt_BR"
export LANGUAGE="pt_BR"
./lazarus

Ersetzen sie pt_BR durch den Eintrag für ihr Land. Sie können ein Skript erstellen, um dies zu automatisieren.

Windows

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.

Im 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.

When I cycle the compiler, I get: make[3]: ./ppc1.exe: Command not found

I 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

Wenn ich versuche, Lazarus zu erstellen (make), erhalte ich:

make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * [interfaces_all] Error 2

Sie müssen ihre make Datei upgraden.

makefile:27: *** Sie benötigen das GNU utils package to use this Makefile. Stop.

Stellen sie sicher, daß sie FPC nicht in ein Verzeichnis mit Leerzeichen im Namen installieren. Das Makefile unterstützt das nicht.

Wenn ich versuche, bei CVS einzuloggen, erhalte ich die Meldung: CVS.EXE [login aborted]: could not find out home directory

Auf einer Windows Plattform muß die HOME Umgebungsvariable ihren (CVS) Benutzernamen und Passwort aufbewahren. In der Kommandozeile geben sie ein:

SET HOME=C:\MyHome

oder

SET HOME=C:\WINDOWS

oder

SET HOME=C:\WINDOWS\Profiles\YourLoginName

oder jeden anderen Ort, den sie wünschen.

Inzwischen 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.

Wie kann ich meinem Programm einen XP Look geben wie Lazarus ihn hat?

Wenn Sie eine Datei myprogram.exe haben, dann erstellen Sie eine Datei "myprogram.exe.manifest" und kopieren Sie diesen Text und fügen ihn in der Datei ein:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>
<description>programom</description>
<dependency>
  <dependentAssembly>
   <assemblyIdentity
     type="win32"
     name="Microsoft.Windows.Common-Controls"
     version="6.0.0.0"
     publicKeyToken="6595b64144ccf1df"
     language="*"
     processorArchitecture="*" />
  </dependentAssembly>
  </dependency>
</assembly>

Voila! XP looks.

Mitwirkende und Kommentare

Diese Seite wurde von der epikwiki Version konvertiert.