Lazarus 32bit Linux mit fpcupdeluxe

Für Installationen unter Linux-Systemen
HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von HobbyProgrammer »

Hallo,

ich habe mir anhand der hier im Forum bekannten PDF-Anleitung mit fpcupdeluxe in einer KUbuntu LTS 64bit VM Lazarus stable (Lazarus 2.2.4 / Fpc 3.2.2) zunächst als 64bit installiert. Dann die in der Anleitung genannten 32bit Pakete nachinstalliert und anschließend mit fpcupdeluxe den 32bit Linux FPC Kompiler nachinstalliert.
Dann habe ich eine kleine Test-App erstellt. Das Kompilieren läuft ohne Probleme durch nur leider bekomme ich beim Linken einen Fehler und der Linkvorgang wird abgebrochen.
Lazarus_Linux_32bit_Fehler.jpg
Lazarus_Linux_32bit_Fehler.jpg (51.84 KiB) 1078 mal betrachtet
Lazarus_Linux_32bit_Einstellung.jpg
Lazarus_Linux_32bit_Einstellung.jpg (87.09 KiB) 1078 mal betrachtet
Laut Google haben auch andere diesen Fehler, jedoch habe ich keine Lösung dafür gefunden.
Deshalb möchte hier im Forum einmal fragen, ob mittlerweile eine Lösung dafür besteht.

Grüße
HobbyProgrammer
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von theo »

Warum möchtest du das machen?
32bit Linux ist ziemlich tot.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von af0815 »

Das Problem ist, du brauchst für das Linken auch die 32 Bit Bibliotheken (und in der richtigen Version). Das Problem ist das es die libc eine der "Standardbiliotheken" ist und zwingend benötigt wird. Du hast sicher eine libc auf deinem Rechner, die ist aber 64Bit und kann für den 32Bit Bereich nicht verwendet werden.

Man sieht mehr, wenn man sich ALLE Messages in die Zwischenablage kopieren lässt und diese dann in eine Textdatei abspeichert.

Hinweise:
https://www.computerbase.de/forum/threa ... 4.2078451/
https://wiki.debian.org/Multiarch/HOWTO

Auch meine Frage: Warum 32Bit unter Linux ? Ich kenne das nur um Apps für den RasPi zu machen, aber dann arm/linux was 32 Bit Linux am ARM ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von HobbyProgrammer »

Ich schreibe in C++ seit einiger Zeit an einem 'CP/M Imagefile Explorer'. Das ist praktisch eine GUI für die Consolen CP/M-Tools von Michael Haardt. Das ganze deshalb in C++ weil der Quellcode der CP/M-Tools in C vorliegt und ich mir damals die Konvertierung nach Pascal sparen wollte. :| Einige User meines 'CP/M Imagefile Explorers' betreiben noch 32bit Linux und Windows Systeme um weitere Retro Computing Tools nutzen zu können. Das C++ Programm kann mit einem makefile auf den 32bit Linux Systemen kompiliert und auch dort dann genutzt werden.
Im weiteren Projektverlauf habe ich aber immer mehr festgestellt das C++ und die wxWidgets doch nicht so ganz meine Welt sind und überlege das ganz nun doch nach Free Pascal Lazarus zu portieren.
Deshalb habe ich gedacht ich könnte per fpcupdeluxe eine Linux 64/32bit cross Kompiler Installation generieren mir welcher ich dann auch direkt 32bit Linux Programme erstellen. Unter Windows funktioniert das prima.
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von af0815 »

HobbyProgrammer hat geschrieben:
Fr 27. Jan 2023, 19:24
Deshalb habe ich gedacht ich könnte per fpcupdeluxe eine Linux 64/32bit cross Kompiler Installation generieren mir welcher ich dann auch direkt 32bit Linux Programme erstellen. Unter Windows funktioniert das prima.
Es würde auch unter Linux problemlos funktionieren, wenn da die Sache mit den Libs nicht wäre.
fpcupdeluxe baut dir den Crosscompiler für 32 Bit ohne Probleme, wie du gesehen hast. Das funktioniert auch, nur wird unter Linux die nativen Bibliotheken von den ToolChains verwendet. Dazu müssen die 32 Bit Libs am System sein. Unter Windows, wirst du auch mit dem Problem über kurz oder lang konfrontiert, nur dort habe ich mir die Libs einfach vom Targetsystem geholt und in einem Verzeichnis gespeichert. Aber schau mal nach, ob fpcupdeluxe nicht im Basisverzeichnis der fpcupdeluxe gemachten Installation den Toolchain für Linux32 ablegt. Unter Windows macht er das nämlich.

Es klingt blöd, aber manchmal ist es unter WIndows leichter. :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von HobbyProgrammer »

Unter Windows habe ich die 64/32bit cross Kompiler Geschichte mit den Stable Installationsdateien hinbekommen.

Das mit dem Linux Toolchain im Lazarus Pfad muß ich mir mal anschauen. Danke für den Tip. :)
Wie und wo müsste ich diese Dateien oder Ordner dann in den Projekteinstellungen angeben?
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von af0815 »

Unter ProjektOptions->CompilerOptions->Path->Libraries (oder so ähnlich, je nach eingestellter Sprache)

Es ist nicht direkt der Lazaruspfad, eine eben höher. Fpcupdeluxe läd bei Bedarf sich einen Toolchain für eine CrossUmgebung herunter, wenn es nötig ist. Damit kann er den fpc bauen, egal für welche Plattform der sein soll. Der liegt normalerweise in dem Verzeichnis wo auch fpc/fpcsourcen/bootstrap/Lazarus liegen und nennt sich cross
Zuletzt geändert von af0815 am Fr 27. Jan 2023, 19:57, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von HobbyProgrammer »

Danke. Das ist mal ein Ansatz. Ich werde das Prüfen und dann Berichten. :D
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von wennerer »

Hallo,
leider kann ich dir nicht wirklich helfen. Was ich sagen kann das es bei mir unter Linux Mint problemlos funktioniert. Ich habe mir folgendes notiert:

Um von Linux64 nach Linux32 crosskompilieren zu können müssen als erstes die Multilib Pakete nachinstalliert
werden. Sind diese Installiert kann man unter einem Linux64 System auch Linux32bit Anwendungen starten. Wer dies
nicht möchte sollte hier aufhören.
Folgende Befehle im Terminal ausführen:
# 32-Bit-Pakete abrufen
sudo apt-get install gcc-multilib
sudo apt-get install libx11-dev:i386
sudo apt-get install pixbuf2.0-0:i386
sudo apt-get install libgtk2.0-0:i386
# fehlende Symlinks erstellen
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
Wichtig:
Leider bekam ich unter Mint Cinnamon 19.3 und 20 beim kompilieren meines ersten kleinen Projektes folgende
Fehlermeldung: linker: /usr/bin/ld: -lglib-2.0 kann nicht gefunden werden, projectTest.lpr(21,1) Error: Error while
linking
Nachdem ich noch den folgenden zusätzlichen Link erstellt habe hat alles funktioniert:
sudo ln -s -f /usr/lib/i386-linux-gnu/libglib-2.0.so.0 /usr/lib/i386-linux-gnu/libglib-2.0.so
Cross32.png
Cross32.png (82.46 KiB) 1035 mal betrachtet
Ich hänge dir mal noch meinen Erstellmodi an. Obwohl ich denke das dir eher im Linux was fehlt.

Viele Grüße
Bernd
Dateianhänge
Linux_32.xml
(1.48 KiB) 34-mal heruntergeladen

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von HobbyProgrammer »

Nach deiner Anleitung habe ich das ganze auch installiert.
Aber irgendetwas scheint bei KUbuntu noch zu fehlen... :(
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von wennerer »

Hallo,
ich habe mir eine Kubuntu 22.04 LTE in Virtualbox installiert und mit fpcupdeluxe Lazarus und den 32bit Linux Crosscompiler installiert. Bei mir gehts es soweit.
kubuntu.png
kubuntu.png (96.69 KiB) 994 mal betrachtet
Seltsamerweise wird das erzeugte Programm immer minimiert gestartet. Keine Ahnung warum. Und auf der Konsole habe ich eine gtk Warnung "Unable to locate theme engine in module_path: "adwaita"

Viele Grüße
Bernd

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von theo »

wennerer hat geschrieben:
Fr 27. Jan 2023, 23:25
Seltsamerweise wird das erzeugte Programm immer minimiert gestartet. Keine Ahnung warum.
Dagegen hilft "EnableLibOverlay" in den Definitionen bei "Lazarus kompilieren einrichten..."
Dann die IDE neu bauen.

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von wennerer »

Hallo,
@Theo: ja das geht. Danke das kannte ich noch nicht.
Vielleicht noch zu meiner Installation: ich habe beim installieren von kubuntu in die VM die Minimalversion (kubuntu-22.04.1-desktop-amd64.iso) ohne zusätzliche Treiber gewählt. Ansonsten einfach durch gedrückt. Meine fpcupdeluxe Version ist V2.2.0n for x86_64-linux-gtk2.
Ins Terminal habe ich das folgende eingegeben:
sudo apt-get install libx11-dev
sudo apt-get install libgdk-pixbuf2.0-dev
sudo apt-get install libpango1.0-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install freeglut3-dev
sudo apt-get install git
sudo apt-get install gcc-multilib
sudo apt-get install libx11-dev:i386
sudo apt-get install pixbuf2.0-0:i386
sudo apt-get install libgtk2.0-0:i386

Die ganzen Symlinks habe ich weggelassen (und später dann probiert wegen der gtk Warnung, machen bei mir aber keinen Unterschied).

Viele Grüße
Bernd

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von HobbyProgrammer »

Dann habe ich bei meinem Erstversuch mit fpcupdeluxe wohl irgendetwas vergessen, falsche Reihenfolge oder sonst einen Fehler gemacht.
Jetzt am Wochenende werde ich wohl nicht dazukommen das nochmal nachzuvollziehen.
Da aber Montag und Dienstag bei mir in der Arbeit alles auf SAP umgestellt wird und ich daher an diesen beiden Tagen frei habe, werde ich das da dann nochmal Schritt für Schritt aufbauen.
Und da bei mir das ganze auch in einer VM erfolgt, kann ich ja auch schön Snapshots erstellen.
Vielen Dank schonmal an dieser Stelle an euch. Das gibt mir Hoffnung. :D
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Lazarus 32bit Linux mit fpcupdeluxe

Beitrag von af0815 »

HobbyProgrammer hat geschrieben:
Sa 28. Jan 2023, 08:50
Dann habe ich bei meinem Erstversuch mit fpcupdeluxe wohl irgendetwas vergessen, falsche Reihenfolge oder sonst einen Fehler gemacht.
Jetzt am Wochenende werde ich wohl nicht dazukommen das nochmal nachzuvollziehen.
Es sieht nicht so aus, als hättest du mit fpcupdeluxe etwas falsch gemacht. Du bist, meiner Meinung nach, an den Spezialitäten von Linux gescheitert. Was dir ganz einfach fehlt, ist eine saubere Zusatzinstallation der i386 Pakete. Leider ist es so, das die notwendigen Symlinks meistens nur in den *-dev Paketen enthalten sind. Da hat wennerer nicht unrecht, wenn er die Symlinks per Hand nachzieht. Auch kann es notwendig sein, die i386 Libraries dem Projekt bekannt zu geben.

Ich glaube seine Lösung ist die funktionierende.

Danke für diesen Tip (von wennerer) in den Projektoptions: <UnitOutputDirectory Value="$(BuildMode)/lib-$(TargetCPU)-$(TargetOS)"/>
Das mit dem BuildMode habe ich nicht auf dem Radar gehabt, macht aber Sinn :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten