Debian10 Cross Compile amd64 -> i386 [erledigt]

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
six1
Beiträge: 788
Registriert: Do 1. Jul 2010, 19:01

Debian10 Cross Compile amd64 -> i386 [erledigt]

Beitrag von six1 »

Hi,
in meinem jugendlichen Leichtsinn dachte ich, ich kann einfach mal so fpcupdeluxe anwerfen und den Cross Compiler installieren... falsch gedacht.

Ausgangslage:
Nagelneues System Debian 10.1 64 Bit, 32 Bit Unterstützung installiert --> check, geht
über fpcupdeluxe STABLE installiert Lazarus 2.0.2 fpc 3.0.4 --> Check, geht
über fpcupdeluxe Cross Compiler nachinstalliert Linux/i386

In lazarus neues Projekt, Fenster mit einem Button drauf erstellt.
zweiten Erstellmodi 32 Bit erstellt mit Ziel Linux/i386

Stand der Dinge:
Compilieren des Projekts unter 64 Bit --> Ok, Binary wird erstellt und läuft

Compilieren des Projekts unter 32 Bit -->

Code: Alles auswählen

Projekt kompilieren, Modus: 32bit, CPU: i386, Ziel: project132: Exit code 1, Fehler: 1
linker: /usr/bin/ld: -lX11 kann nicht gefunden werden
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so wird bei der Suche nach -lgdk_pixbuf-2.0 übersprungen
linker: /usr/bin/ld: -lgdk_pixbuf-2.0 kann nicht gefunden werden
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so wird bei der Suche nach -lgtk-x11-2.0 übersprungen
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.a wird bei der Suche nach -lgtk-x11-2.0 übersprungen
linker: /usr/bin/ld: -lgtk-x11-2.0 kann nicht gefunden werden
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgobject-2.0.so wird bei der Suche nach -lgobject-2.0 übersprungen
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgobject-2.0.a wird bei der Suche nach -lgobject-2.0 übersprungen
linker: /usr/bin/ld: -lgobject-2.0 kann nicht gefunden werden
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libglib-2.0.so wird bei der Suche nach -lglib-2.0 übersprungen
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libglib-2.0.a wird bei der Suche nach -lglib-2.0 übersprungen
linker: /usr/bin/ld: -lglib-2.0 kann nicht gefunden werden
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgthread-2.0.so wird bei der Suche nach -lgthread-2.0 übersprungen
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgthread-2.0.a wird bei der Suche nach -lgthread-2.0 übersprungen
linker: /usr/bin/ld: -lgthread-2.0 kann nicht gefunden werden
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgmodule-2.0.so wird bei der Suche nach -lgmodule-2.0 übersprungen
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libgmodule-2.0.a wird bei der Suche nach -lgmodule-2.0 übersprungen
linker: /usr/bin/ld: -lgmodule-2.0 kann nicht gefunden werden
linker: /usr/bin/ld: inkompatibles //usr/lib/x86_64-linux-gnu/libpango-1.0.so wird bei der Suche nach -lpango-1.0 übersprungen
linker: /usr/bin/ld: -lpango-1.0 kann nicht gefunden werden
project1.lpr(21,1) Error: Error while linking



fpcupdeluxe Eintrag in fpc.cfg:

Code: Alles auswählen

# begin fpcup do not remove i386-linux
# cross compile settings dependent on both target OS and target CPU
#IFDEF FPC_CROSSCOMPILING
#IFDEF LINUX
#IFDEF CPUI386
# Inserted by fpcup 25-10-19 09:37:52
-FD/usr/bin/
-XP
-Fl/usr/lib/i386-linux-gnu/
-Fl/usr/lib32/
-Fl/usr/lib/gcc/x86_64-linux-gnu/8/32/
#ENDIF
#ENDIF
#ENDIF
# end fpcup do not remove


Die zwei Dateien i386-linux-as und i386-linux-ld sind in /usr/bin mit Ausführrechten erstellt.
In /usr/lib/i386-linux-gnu/ und /usr/lib/gcc/x86_64-linux-gnu/8/32/ sind jede Menge Dateien vorhanden.

Keine Ahnung, wo ich da suchen soll, oder an was es liegt...
Wäre echt dankbar, wenn mich dabei jemand unterstützen würde, Cross Compile an den Start zu bekommen...
Zuletzt geändert von six1 am Fr 25. Okt 2019, 15:33, insgesamt 1-mal geändert.
Gruß, Michael

Benutzeravatar
six1
Beiträge: 788
Registriert: Do 1. Jul 2010, 19:01

Re: Debian10 Cross Compile amd64 -> i386

Beitrag von six1 »

Hmmm, einen Beitrag zu schreiben hilft :-)

Ich habe einen Beitrag gefunden, welcher die nachzuinstallierenden Pakete sowie die FEHLENDEN SYMLINKS beschreibt.
https://github.com/LongDirtyAnimAlf/fpc ... /issues/25

Ausgeführt und geht!

Änderungen:

Code: Alles auswählen

retrieve 32-bit packages
sudo apt-get install gcc-multilib libx11-dev:i386 pixbuf2.0-0:i386 libgtk2.0-0:i386
 
create missing symlinks
sudo ln -s -f /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0 /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0 /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0 /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 /usr/lib/i386-linux-gnu/libgobject-2.0.so
sudo ln -s -f /lib/i386-linux-gnu/libglib-2.0.so.0 /lib/i386-linux-gnu/libglib-2.0.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 /usr/lib/i386-linux-gnu/libgthread-2.0.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0 /usr/lib/i386-linux-gnu/libgmodule-2.0.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libpango-1.0.so.0 /usr/lib/i386-linux-gnu/libpango-1.0.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libcairo.so.2 /usr/lib/i386-linux-gnu/libcairo.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libatk-1.0.so.0 /usr/lib/i386-linux-gnu/libatk-1.0.so
sudo ln -s -f /usr/lib/i386-linux-gnu/libpangocairo-1.0.so.0 /usr/lib/i386-linux-gnu/libpangocairo-1.0.so
 



Vielleicht hilft es jemandem...
Gruß, Michael

Antworten