Crosskompilierung x86_64 > i386 benutzt /usr/lib32 nicht

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:

Crosskompilierung x86_64 > i386 benutzt /usr/lib32 nicht

Beitrag von Scotty »

Ich habe kürzlich mein System von Ubuntu auf Arch umgestellt und jetzt stimmen die Pfade fürs Crosscompiling scheinbar nicht mehr.

Lazarus meldet zum Beispiel

Code: Alles auswählen

/usr/bin/ld: skipping incompatible [b]/usr/lib/[/b]libpthread.so when searching for -lpthread
Wenn ich "fpc -Pi386 -vt bogus" laufen lasse, kommt

Code: Alles auswählen

Using unit path: /usr/local/lib/fpc/2.7.1/
Using library path: [b]/usr/lib32/[/b]
Using library path: /lib32/
statt /usr/lib/ wenn -Pi386 weggelassen wird.

Meine Projekteinstellungen sind

Code: Alles auswählen

-MObjFPC -Scghi -CX -Cirot -O2 -Pi386 -Xs -XX -vewnhib -l -FuSynapse -Fu/usr/local/bin/Lazarus/lcl/units/i386-linux/qt -Fu/usr/local/bin/Lazarus/lcl/units/i386-linux -Fu/usr/local/bin/Lazarus/components/lazutils/lib/i386-linux -Fu/usr/local/bin/Lazarus/packager/units/i386-linux -Fu. -vm5024,5057 -dLCL -dLCLqt
(gtk2 geht auch nicht als i386).

In der ~/.fpc.cfg steht

Code: Alles auswählen

#ifdef cpux86_64
-Fl/lib
-Fl/usr/lib
#endif
#ifdef cpui386
-Xd
-Fl/lib32
-Fl/usr/lib32
#endif
#ifdef cpuarm
-Xd 
-Fl/usr/local/arm/libc/usr/lib
-CaEABI 
-Parm 
-CfSOFT
-CpARMV5
#endif
64bit und auch arm gehen natürlich einwandfrei. Was habe ich vergessen?

Lazarus 0.9.31 r33990M FPC 2.7.1 x86_64-linux-qt
Linux version 3.1.5-1-ARCH (tobias@T-POWA-LX) (gcc version 4.6.2 20111125 (prerelease) (GCC) ) #1 SMP PREEMPT Sat Dec 10 14:43:09 CET 2011

marcov
Beiträge: 1102
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: Crosskompilierung x86_64 > i386 benutzt /usr/lib32 nicht

Beitrag von marcov »

Es gab eine frage aufs Haupt Lazarus Forum hierüber. Also das Problem sind die Binutils und nicht FPC oder Lazarus

Das kann man einfach sehen wenn man mit -s kompiliert. Die generierte ppas.sh und link.res sind sauber, und habe keine Reference nach /usr/lib. Also das Problem ist im Binutils LD der nicht Pfad ändert wenn man 32-bit linking selectiert.

Darauf antworte jemand das wenn man alle "multilib" packages installierte (libs,binutils, gcc mit package -multilib darin oder so) das es dan klappt. Ich kann das aber nicht testen, weil ich kein Archlinux habe.

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: Crosskompilierung x86_64 > i386 benutzt /usr/lib32 nicht

Beitrag von Scotty »

Den anderen Beitrag habe auch ich gepostet. Im internationalen Forum gibt es IMHO ein breiteres Spektrum an Kompetenzen.
Deine Empfehlungen werde ich die Tage prüfen, Danke!
PS: Falls es jemanden interessiert: http://www.lazarus.freepascal.org/index ... 7.msg83709" onclick="window.open(this.href);return false;

Antworten