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 symbols aus der executable Datei zu entfernen. Es befindet sich im Lazarus Verzeichnis lazarus\pp\bin\i386-win32\.

Tippen sie einfach "strip --strip-all <ihre executable Datei 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 fpc: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 [i]smartlinking[/i] 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.

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?

The LCL has in the LCLProc procedure to write debug output:

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

Unter normalen Umständen the output is written to stdout. Wenn stdout geschlossen ist, (zum Beispiel wenn die Anwendung ist {$AppType Gui} oder unter Windows mit -WG kompiliert wurde), no output is written.

Debug output kann auch in eine Datei geschrieben werden. Die LCLProc Unit prüft in its initialization the command line parameters for '--debug-log=<file>'. If it finds it sends debug output to <file>.

If it doesn't find a --debug-log command line parameter, it looks if an environment variable xxx_debuglog exists, where xxx is the program file name without extension. Für Lazarus wäre dies lazarus_debuglog. Wenn eine solche Umgebungsvariable existiert, it uses that as file to write debug output to. Example: if you do:

set lazarus_debuglog=c:\lazarus\debug.txt

debug output will be written to c:\lazarus\debug.txt.

Since this is implemented in lclproc, every application using lclproc, can use this output facility.

Debuging Lazarus
Äußerst nützlich für Windows: If you want output on a 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.

When I do var mytext: text; um eine Textdatei zu deklarieren, erhalte ich "Unit1.pas(32,15) Error: Error in type definition". Wie kann ich das berichtigen?

Die TControl Klasse hat eine Text Eigenschaft. In a method of a form, that has higher visibility, the Text type from the system unit. Sie können den TextFile Typ verwenden, which is just an alias for the Text type or you can add the unit to the type defintion.

var
  MyTextFile: TextFile;
  MyText: System.Text;

A similar name clash exists with assigning and closing a text file. TForm hat eine assign und eine Close Methode. Sie können AssignFile und CloseFile verwenden oder 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.

To start with recompile LCL for Gtk2. Gehen sie zum Menü "Werkzeuge"->"Configure Build Lazarus" und setzen LCL erstellen auf clean+build und deaktivieren alles andere.

Jetzt klicken sie auf OK und gehen zum Menü "Werkzeuge"->"Lazarus erstellen".

Jetzt können sie ihre Software mit GTK2 kompilieren indem sie zu den Compilereinstellungen gehen und das widgetset auf GTK2 ändern.

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

This warning message indicates that your locale enconding is set to utf-8. If you are using Gtk 1 this can be a serious problem and prevent the correct working of Lazarus or software created with Lazarus.

To work around this, just change your locale to a non utf-8 before executing the program on the command line, like this:

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.