grundsatzfrage zu Cross-Compilieren
-
- Beiträge: 129
- Registriert: Sa 25. Mai 2013, 07:43
- OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
- CPU-Target: 32Bit
grundsatzfrage zu Cross-Compilieren
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
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
-------------------------
-------------------------
-
- Lazarusforum e. V.
- Beiträge: 3177
- 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
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.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.
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 129
- Registriert: Sa 25. Mai 2013, 07:43
- OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
- CPU-Target: 32Bit
Re: grundsatzfrage zu Cross-Compilieren
Danke,
ich werde mir das morgen mal anschauen.
ich werde mir das morgen mal anschauen.
Vbxler
-------------------------
-------------------------
- af0815
- Lazarusforum e. V.
- Beiträge: 6763
- 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
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.
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).
-
- 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
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
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
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- 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
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.
-
- Beiträge: 129
- Registriert: Sa 25. Mai 2013, 07:43
- OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
- CPU-Target: 32Bit
Re: grundsatzfrage zu Cross-Compilieren
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!
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
-------------------------
-------------------------
- af0815
- Lazarusforum e. V.
- Beiträge: 6763
- 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
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.
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

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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
... 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

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.
- af0815
- Lazarusforum e. V.
- Beiträge: 6763
- 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
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 

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).