ich steht mal wieder bzgl. Installation auf dem Schlauch. Ich versuche gerade, mir FPC auf Linux für das Cross-Compiling einzurichten. Bisher habe ich immer mit den Binär-Pakten gearbeitet. Die sind ja immer nur für ein Target eingerichtet. So wie ich das verstanden habe, muss ich mir für das Crosscompiling das FPC komplett neu z.B. aus dem Trunk compilieren. Ich habe nun mittels SVN den Trunk direkt neben mein bestehendes FPC gespeichert. Ich habe also 2 FPC-Versionen auf dem Rechner:
- /usr/share/fpcsrc/2.2.4 und
- /usr/share/fpcsrc/trunk
Was muss ich ab jetzt machen, um den Trunk zu meinem FPC für Lazarus zu machen. Eingabe von 'fpc' in ein Terminal gibt mir die Version 2.2.4-3 aus. Die brauche ich ja auf jeden Fall noch, um FPC zu übersetzen. Ich habe jetzt 2 Möglichkeiten gefunden, FPC zu kompilieren:
nach FPC-Beispielbuch als PDF:
Code: Alles auswählen
sudo make all OS_TARGET=win32 CPU_TARGET=i386
sudo make crossinstall OS_TARGET=win32 CPU_TARGET=i396
Funktioniert nicht. Wenn ich danach versuche, in Lazarus ein Programm mit win32 u. i396 zu kompilieren, kommt die Meldung:
Code: Alles auswählen
Das Projekt nutzt die Ziele OS-win32 und CPU=i386.
Die system.ppu für dieses Ziel wurden nicht in den Bbinärverzeichnissen von FPC gefunden.
Stellen Sie sicher, dass fpc für diese Zielplattform richtig installiert ist und dann die fpc.cfg die richtigen Verzeichnisangaben enthält.
Einen anderen Ansatz habe ich irgendwo im Netz gefunden. In /lazarus/tools/install$ gebe ich ein:
Code: Alles auswählen
sudo ./create_fpc_deb.sh fpc /usr/share/fpcsrc/trunk
sudo ./create_fpc_deb.sh fpcsrc /usr/share/fpcsrc/trunk
Funktioniert auch nicht. Er bricht ab mit
Code: Alles auswählen
........
Free Pascal Compiler version 2.2.4-3 [2009/06/03] for i386
Copyright (c) 1993-2008 by Florian Klaempfl
Target OS: Linux for i386
Compiling /home/wolfz/tmp/fpc/test.pas
Linking /home/wolfz/tmp/fpc/test
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
/usr/bin/ld: cannot find -lgpm
test.pas(4,7) Error: Error while linking
test.pas(4,7) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
Er kann also die Datei /home/wolfz/tmp/fpc/test.pas nicht kompilieren. Diese Datei sieht so aus:
Code: Alles auswählen
program test;
{$linklib gpm}
{$linklib ncurses}
begin end.
Das Paket gpm habe ich nachinstalliert. Funktioniert aber trotzdem nicht und gibt auch keine andere Fehlermeldung.
Ich habe übrigens auch die /etc/fpc.conf provisorisch angepasst:
Code: Alles auswählen
# searchpath for units and other system dependent things
# -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
# -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
# -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
-Fu/usr/lib/fpc/trunk/units/$fpctarget
-Fu/usr/lib/fpc/trunk/units/$fpctarget/*
-Fu/usr/lib/fpc/trunk/units/$fpctarget/rtl
#-Fu~/fpc/packages/base/*/units/;~/fpc/fcl/units/;~/fpc/rtl/units/
So, jetzt bin ich mit meinem Latein am Ende. Wie erkennt Lazarus überhaupt, welche FPC version er für $fpcversion einsetzen muss? Ich sehe nirgendwo eine Einstellmöglichkeit. Irgendwie muss ja auch nach dem Compilieren von FPC der Compiler /etc/fpc ersetzt werden durch die compilierte Version.
Ich würde gerne Lazarus einrichten für ARM-Linux. Das Beispiel oben für Windows auf Linux interessiert mich eigentlich weniger sondern nur, um zu verstehen, was da überhaupt passiert. Es wäre toll, wenn mir jemand das Verfahren im Zusammenhang erklären könnte.