grundsatzfrage zu Cross-Compilieren

Für Fragen rund um die Ide und zum Debugger
Antworten
Vbxler
Beiträge: 125
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

grundsatzfrage zu Cross-Compilieren

Beitrag von Vbxler »

Hallo an Alle!

Ich habe eine grundsätzliche Frage zum Cross-Compilieren.
Ich möchte eine Anwendung aber auf einer Notebook mit Linux OS
für einen BeagleBone Black (ARM-V7-Linux) erstellen.

Jetzt möchte ich eine spezielle *.so Datei verwenden,
die habe ich einmal als Intel-X86_64-Linux Version und einmal
als ARM-V7-Linux Version vorliegen.
Die beiden Bibliotheken funktionieren auch auf den jeweiligen Zielplattformen.

Vermutlich werde ich da ein Problem bekommen auf dem Notebook, wenn ich die für ARM compilieren möchte.
Weil in /urs/lib/ ist die Intel-X86_64-Linux Version vorhanden.
Und wenn ich die ARM-V7-Linux Version nach /urs/lib/ kopiere, wird gemeckert, weil die *.so nicht passt.

Sind meine Vermutungen oder Befürchtungen richtig oder gibt es da eine Lösung?
Wenn ja, dann muss ich wahrscheinlich auf dem BeagleBone die IDE installieren.

Danke
Vbxler
-------------------------

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: grundsatzfrage zu Cross-Compilieren

Beitrag von Socke »

Vbxler hat geschrieben:Vermutlich werde ich da ein Problem bekommen auf dem Notebook, wenn ich die für ARM compilieren möchte.
Weil in /urs/lib/ ist die Intel-X86_64-Linux Version vorhanden.
Und wenn ich die ARM-V7-Linux Version nach /urs/lib/ kopiere, wird gemeckert, weil die *.so nicht passt.

Wenn deine Linux Distribution Multi-Architecture-fähig ist wie z.B. Debian kannst du Pakete für verschiedene Architekturen gleichzeitig installieren. Diese werden dann automatisch in separate Verzeichnisse abgelegt.

Falls nicht legst du die arm-Dateien in ein eigenes Verzeichnis. Dem Free Pascal Compiler kannst du über die Option -Fl/pfad/zu/arm-libraries sagen, wo diese liegen (ich bin mir aber nicht ganz sicher, ob das der richtige Parameter ist).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Vbxler
Beiträge: 125
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: grundsatzfrage zu Cross-Compilieren

Beitrag von Vbxler »

Danke,

ich werde mir das morgen mal anschauen.
Vbxler
-------------------------

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: grundsatzfrage zu Cross-Compilieren

Beitrag von af0815 »

Die Verschiedenen Architekturen auch beim Crosscompilieren kann man über die Macros Steuern. Damir wird je nqch Plattform die Richtige Lib gefunden.

Bin nur am Tablett, da kann ich kein Beispiel anhängen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: grundsatzfrage zu Cross-Compilieren

Beitrag von mschnell »

Ich habe vor einiger Zeit mal Cross-Kompilieren versucht, um enin Programm ui entwickeln, das auf einem ARM-basierten NAS laufen sollte.
Als Development System habe ich PC-Linux verwendet (Windows wäre vermutlich noch problematischer gewesen).

Erstmal bin ich an den besagten Libraries gescheitert (bei einem einfachen Beispiel ging es). Hätte man mit viel Recherche vielleicht noch hinbekommen.

Aber Cross-Compilieren ohne Remote-Debuggen ist wenig sinnvoll.

Deshalb habe ich versucht, Remote-Debuggen über Netzwerk hinzubekommen.

Technisch gibt es da zwei Möglichkeiten:

(1) Entweder den GNU Debugger in gdserver und remote gdb aufteilen (Das ist ein Linux-Standard Verfahren und Lazarus würde davon zunächst gar nichts merken und einfach den richtigen "gdb" starten ). Es ist mir aber nicht gelungen die beiden zusammenpassenden "gdb" Teile korrekt zu kompilieren.

(2) oder Lararus dazu bringen, über ssh den Standard gdb auf dem Zielsystem anzusprechen. Code dafür ist in den Lazarus Sourcen vorhanden, aber auskommentiert (zumindest war das vor ein paar Jahren so). Der Code sah gar nicht schlecht aus, hätte aber sicher noch einige Arbeit gebraucht um ans Laufen zu kommen.

-Michael

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: grundsatzfrage zu Cross-Compilieren

Beitrag von fliegermichl »

Also ich hab für die Entwicklung beim Raspberry Pi das Lazarus direkt auf dem Raspi installiert und mit dem TightVNCViewer unter Windows sozusagen die Fernsteuerung gemacht. Beide Rechner hängen im WLan und das funktioniert reibungslos.

Vbxler
Beiträge: 125
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: grundsatzfrage zu Cross-Compilieren

Beitrag von Vbxler »

Das Problem geht ja erst mit den *.so Bibliotheken für die verschiedenen Plattformen los.
Ich werde wohl nicht umhin kommen, auf dem Kleinrechner die IDE zu installieren und
über Remote-Zugriff das zu steuern. Geht wahrscheinlich schnelle als die ganzen Versuche.

Vielen Dank!
Vbxler
-------------------------

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: grundsatzfrage zu Cross-Compilieren

Beitrag von af0815 »

Ich habe crosscompiliert von windows zu QNAP (ist schon etwas her). Es ging auch Crossdebuggen.

NUR: Du brauchst einen stabilen Cross-Buildchain von der anderen Plattform ! Und für das Remote Debuggen den richtigen Remotedebugger (Remote GDB) dazu muss aber der Teil auf der Entwicklungsmaschine mit dem Teil auf den Remotedevice zusammenstimmen und das bekommt man oft nur hin, wenn man sich den GDB mit den Crossbuildchain baut und das ist manchmal unmöglich.

Lazarus kann mit dem remote Debugger umgehen. Ich habe das vor einiger Zeit mal Zwischen Windows und dem RasPi gemacht. Abgesehen von großen Lags, ging es relativ gut. Nur wenn ich wirklich Debuggen muss dann geht am Raspi auch Nativ :-) Halt die IDE ist/war etwas zäh.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: grundsatzfrage zu Cross-Compilieren

Beitrag von mschnell »

... siehe unsere Diskussion von damals ... :)

Da man mit RASPi und BeagleBone etc als embedded "Kleinrechner" heute ja schon Platinen mit jene Menge Ram und Rechenpower zur Verfügung hat, die (anders als QNAP) auch Grafik-Hardware besitzen, ist das Thema Corss-Compile und Remote Debugging sehr in den Hintergrund geraten.

... und auf einem RasPI 4 sollte es auch nicht mehr zäh sein.

-Michael
Zuletzt geändert von mschnell am Mi 22. Apr 2020, 09:58, insgesamt 2-mal geändert.

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: grundsatzfrage zu Cross-Compilieren

Beitrag von af0815 »

Ich arbeite aktuell sehr viel mit RasPi beruflich. Deswegen habe ich das Thema Cross Build und Debug täglich auf dem Monitor. Seit dem 3B geht es auch direkt am RasPi so leidlich. Trotzdem mache ich 90% am Windowsrechner und dann erst am RasPi. Nur wenn ich mit Kameras arbeiten muss, bleibt mir nicht viel anderes übrig, dann aber auf RasPi 4 mit 4 GB Ram. Trotzdem ist dort das arbeiten zäher als am PC. Ok, dort stinke ich aus voller Hose :mrgreen:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten