[gelöst] fpc.cfg für cross compilation

Für Installationen unter Linux-Systemen
Antworten
Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

[gelöst] fpc.cfg für cross compilation

Beitrag von Scotty »

Basis ist x86_64, ich habe ppc386 kompiliert und die notwendigen 32bit libs nachinstalliert (libc6-dev-i386). Außerdem noch in der fpc.cfg die Pfade -Fl/lib;/usr/lib;-Fl/lib32;/usr/lib32 angegeben. Dummerweise benutzt fpc immer /lib & /usr/lib und findet dort die falsche crti.o. Das kann man durch Lazarus->Compilereinstellungen->Andere -Xd /usr/lib abstellen. Das ist aber etwas unschön, wenn man häufiger zwischen 64bit und 32bit hin und her schaltet. Meine Frage deshalb: Wie kann ich in der fpc.cfg etwas wie

Code: Alles auswählen

#ifdef $fpctarget=x86_64
   -Fl/usr/lib 
#elseif 
  -Fl/usr/lib32 
#endif
angeben?
Zuletzt geändert von Scotty am Sa 21. Nov 2009, 17:48, insgesamt 1-mal geändert.

marcov
Beiträge: 1104
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: fpc.cfg für cross compilation

Beitrag von marcov »

#ifdef x86_64
-Fl/usr/lib
#else
-Xd
-Fl/usr/lib32
#endif

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: fpc.cfg für cross compilation

Beitrag von Scotty »

Das ifdef scheint zu funktionieren, aber wenn ich -Xd/usr/lib in die cfg schreibe, bekomme ich "Error: Illegal parameter: -Xd/usr/lib". In den Compilereinstellungen des Projekts funktioniert es (wenn ich ein Leerzeichen nach dem Xd einfüge).

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: fpc.cfg für cross compilation

Beitrag von Scotty »

"-Xd" kann keine zusätzlichen Informationen aufnehmen und bedeutet, dass alle lib-Pfade nicht genutzt werden. So, wie es marcov hingeschrieben hat, ist es korrekt.

Antworten