Crosscompiling für QNAP (Arm)
-
- Beiträge: 586
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: Crosscompiling für QNAP (Arm)
Also zum thema "gdb server cross compile" kann ich leider nix sagen.
Aber wenn man einen GDB server hat:
Es gibt eine gdb server Klasse: Im File ide\debugmanager.pas die Unit GDBMIServerDebuggerin die uses Klausel einfuegen. gdb server Einstellungen sind dann in den globalen Optionen.
Allerdings ist die noch nicht fertig. Sie leided an den selben Problemen wie *alle* anderen remote debug Klassen: http://wiki.lazarus.freepascal.org/Remote_Debugging ("Warning" Sektion)
Aber wenn man einen GDB server hat:
Es gibt eine gdb server Klasse: Im File ide\debugmanager.pas die Unit GDBMIServerDebuggerin die uses Klausel einfuegen. gdb server Einstellungen sind dann in den globalen Optionen.
Allerdings ist die noch nicht fertig. Sie leided an den selben Problemen wie *alle* anderen remote debug Klassen: http://wiki.lazarus.freepascal.org/Remote_Debugging ("Warning" Sektion)
- af0815
- Lazarusforum e. V.
- Beiträge: 6790
- 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: Crosscompiling für QNAP (Arm)
Die Anleitung kenn ich, geht über SSH (Gründe dagegen siehe ein paar Posts früher). Ich will deshalb über die HOST:PORT Version arbeiten.
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: Crosscompiling für QNAP (Arm)
Doch (aber komischerweise "arm-none-linux-gnueabi" ):af0815 hat geschrieben:Edit: der gdbserver ist mal nicht in den ipkg's vorhanden. Schaut nicht so easy aus.
[~] # ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optwa ... ackages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optwa ... ackages.gz
Updated list of available packages in /opt/lib/ipkg/lists/cs08q1armel
Successfully terminated.
[~] # ipkg install gdb
Package gdb (6.8-2) installed in root is up to date.
Nothing to be done
Successfully terminated.
[~] # gdb -v
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-none-linux-gnueabi".
Aber: leider
[~] # gdb --tui
gdb: TUI mode is not supported
[~] #
-Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6790
- 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: Crosscompiling für QNAP (Arm)
Jetzt kann ich vorlaut sein: Soll ich dir einen mit TUI bauenmschnell hat geschrieben: Aber: leider
[~] # gdb --tui
gdb: TUI mode is not supported
[~] #

So ich habe jetzt so wie im Thread Re: Remote Debugger (Windows -> Linux) und ein paar Posts früher mal die IDE mit der geänderten ide\debugmanager.pas kompiliert. Dann kann man beim Debugger die ganzen Sachen einstellen und auf der QNAP folgendes starten
Code: Alles auswählen
[/share/Public] # ./gdbserver 10.0.2.15:2345 project1 -h
Process project1 created; pid = 25282
Listening on port 2345
Remote debugging from host 192.168.1.8
Usage: /share/HDA_DATA/Public/project1 -h
Child exited with retcode = 0
Child exited with status 0
GDBserver exiting
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- af0815
- Lazarusforum e. V.
- Beiträge: 6790
- 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: Crosscompiling für QNAP (Arm)
Ich habe mal geschaut ob ich den für den GDB für den ARM mit TUI bauen kann. Jetzt weis ich auch warum es nicht so einfach ist. Es werden zusätliche Bibliotheken wie die ncurses benötigt, es entsteht also ein Rattenschwanz an benötigten weiteren Bibliotheken. Das wird der Grund sein, warum es nicht gemacht wurde.mschnell hat geschrieben: Aber: leider
[~] # gdb --tui
gdb: TUI mode is not supported
[~] #
Hinweis: Es ist auch ein zweiter Thread speziell über das Thema REMOTE DEBUG aktiv. Dort wird fleissig über Remote Debugging mittels SSH, GDB->GDBSERVER etc. diskutiert.
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: Crosscompiling für QNAP (Arm)
Da bist Du natürlich klar im Vorteil !af0815 hat geschrieben:Jetzt kann ich vorlaut sein: Soll ich dir einen mit TUI bauen

Super, dass das Remote-Debugging mit erstmal prinzipiell funktioniert !!!
Ich hoffe im Moment auf die SSH-Lösung. Die scheint mir das Ideale zu sein, wenn man sie an's Laufen bringt.
Mal sehen, Ob diese Variante flotter ist und die Breakpoints keine Probleme machen. Sie wäre auch einfacher zu installieren, weil man ja keinen gdbserver für das Target braucht (auch keinen gdb mit TUI) .
-Michael
Zuletzt geändert von mschnell am Fr 8. Feb 2013, 09:51, insgesamt 1-mal geändert.
-
- 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: Crosscompiling für QNAP (Arm)
Es gibt schon einen Grund, warum wir lieber mit Lazarus entwickeln als mit Caf0815 hat geschrieben:es entsteht also ein Rattenschwanz an benötigten weiteren Bibliotheken. Das wird der Grund sein, warum es nicht gemacht wurde.

-Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6790
- 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: Crosscompiling für QNAP (Arm)
Mein nächster Schritt ist, das ganze nochmals durchzuspielen und dabei die Doku zu testen. Ausserdem das ganze sauber zu schreiben. Vielleich so, das man das auch in die Wiki kopieren kann.
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: Crosscompiling für QNAP (Arm)
Falls Du das auf Deutsch erzeugst, mache ich gerne eine Englische Übersetzung.af0815 hat geschrieben:Mein nächster Schritt ist, das ganze nochmals durchzuspielen und dabei die Doku zu testen. Ausserdem das ganze sauber zu schreiben. Vielleich so, das man das auch in die Wiki kopieren kann.
Gut wäre es natürlich sowohl die gdbserver als auch die SSH-Variante zu dokumentieren.
Gruß,
-Michael
-
- 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: Crosscompiling für QNAP (Arm)
Ein Anfänger-Frage:
Ich habe bisher immer Suse 32 Bit verwendet und bin jetzt auf Debian Squeeze 64 Bit umgestiegen. Da kenne ich mich mit der Programm-Installation nicht aus.
Um Lazarus auis dem trunk zu übersetzen benötigt man fpc trunk (2.7.x).
Um fpc aus dem trunk zu übersetzen braucht man fpc 2.6.0.
Mit apt-get in Debian Squeeze bekommt man aber nur 2.4.0.
ich habe zwar 2.6.0 für Debian gefunden: http://packages.debian.org/de/sid/fpc-2.6.0
Ich weiß aber nicht, wie ich das installieren soll.
Ich wäre für eine kurze Hilfestellung dankbar.
-Michael
Ich habe bisher immer Suse 32 Bit verwendet und bin jetzt auf Debian Squeeze 64 Bit umgestiegen. Da kenne ich mich mit der Programm-Installation nicht aus.
Um Lazarus auis dem trunk zu übersetzen benötigt man fpc trunk (2.7.x).
Um fpc aus dem trunk zu übersetzen braucht man fpc 2.6.0.
Mit apt-get in Debian Squeeze bekommt man aber nur 2.4.0.
ich habe zwar 2.6.0 für Debian gefunden: http://packages.debian.org/de/sid/fpc-2.6.0
Ich weiß aber nicht, wie ich das installieren soll.
Ich wäre für eine kurze Hilfestellung dankbar.
-Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6790
- 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: Crosscompiling für QNAP (Arm)
Schau mal auf Sourceforge Paket fpc-2.6.0.x86_64-linux.tar. Das Paket herunterladen und den ppc aus dem Paket herausextrahieren (ps liegt in /lib !!). Damit hast du den aktuellen Bootstrapcompiler.
Code: Alles auswählen
Install:
bootstrapcompiler in ~/fpcbootstrap
FPC: SVN checkout fpc in ~/fpc
LAZ: SVN checkout lazarus in ~/pascal
# cd ~/fpc
# make build PP=~/fpcbootstrap/ppc386
symlink auf die Datei
make install INSTALL_PREFIX=/usr/local PP=/home/andi/fpc/compiler/ppc386
link von /usr/local/lib/fpc/2.7.1/ppc386 auf /usr/local/bin erstellen
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: Crosscompiling für QNAP (Arm)
Danke ! Funktioniert.
Bei mir natürlich ppcx64.
Das erste "Symlink" habe ich nicht verstanden, ist aber anscheinend auch nicht nötig.
Und jetzt Lazarus übersetzen.....
Ich bekomme
Target OS: Linux for x86-64
Compiling fcllaz.pas
Compiling registerfcl.pas
registerfcl.pas(45,22) Fatal: Can't find unit process used by RegisterFCL
Vermutlich findet er die fpc Sourcen nicht.
Also habe ich in /usr/share/fpcsrc (da war ein Folder 2.4.0 mit den fpc Sourcen) einen link namens 2.7.1 angelegt.
nützt nix.
Dann habe ich auch in /urs/local/share/fpcsrc diesen link angelegt
nützt auch nix.
-Michael
Bei mir natürlich ppcx64.
Das erste "Symlink" habe ich nicht verstanden, ist aber anscheinend auch nicht nötig.
Und jetzt Lazarus übersetzen.....
Ich bekomme
Target OS: Linux for x86-64
Compiling fcllaz.pas
Compiling registerfcl.pas
registerfcl.pas(45,22) Fatal: Can't find unit process used by RegisterFCL
Vermutlich findet er die fpc Sourcen nicht.
Also habe ich in /usr/share/fpcsrc (da war ein Folder 2.4.0 mit den fpc Sourcen) einen link namens 2.7.1 angelegt.
nützt nix.
Dann habe ich auch in /urs/local/share/fpcsrc diesen link angelegt
nützt auch nix.
-Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6790
- 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: Crosscompiling für QNAP (Arm)
Gib die Links wieder weg.
Der Link
ist dann notwendig wenn der fpc den ppc... nicht findet der normalerweise in /usr/... erwartet wird. der FPC selbst ist ja nur ein stub der den richtigen ppc auswählt.
Schaut dir mal die fpc.cfg's an. bzw. fragen den fpc welche er nimmt auf der Kommandozeile. Versuch dann mal eine Minimalbeispiel mit dem fpc zu kompilieren ob das geht. SCNR
Standardmässig gibt es keine fpc.cfg !! Die muß man sich erst erzeugen und konfigurieren (oder eine alte nehmen)
Siehe auch Erzeugen_Sie_die_Datei_fpc.cfg ist zwar für Win, unter Linux gehts ähnlich.
Dann erst kümmere dich um Lazarus.
Der Link
Code: Alles auswählen
link von /usr/local/lib/fpc/2.7.1/ppc386 auf /usr/local/bin erstellen
Schaut dir mal die fpc.cfg's an. bzw. fragen den fpc welche er nimmt auf der Kommandozeile. Versuch dann mal eine Minimalbeispiel mit dem fpc zu kompilieren ob das geht.
Code: Alles auswählen
program Hello;
begin
WriteLn('Hello World');
end.

Standardmässig gibt es keine fpc.cfg !! Die muß man sich erst erzeugen und konfigurieren (oder eine alte nehmen)
Siehe auch Erzeugen_Sie_die_Datei_fpc.cfg ist zwar für Win, unter Linux gehts ähnlich.
Dann erst kümmere dich um Lazarus.
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: Crosscompiling für QNAP (Arm)
Scheinen ja nix zu bringen..af0815 hat geschrieben:Gib die Links wieder weg.
Das ist mir klar. Der macht auch was er soll. "fpc" (mit $PATH gefunden) startet ppcx64 v2.7.1af0815 hat geschrieben:Der Linkist dann notwendig wenn der fpc den ppc... nicht findet der normalerweise in /usr/... erwartet wird. der FPC selbst ist ja nur ein stub der den richtigen ppc auswählt.Code: Alles auswählen
link von /usr/local/lib/fpc/2.7.1/ppc386 auf /usr/local/bin erstellen
Ich glaube, ich habe noch keine. Das bekannte Problem bei fpc.cfg ist, dass sie an diversen verschiedenen Stellen gesucht wird und die gefundenen Varianten möglicherweise gemerged werden (oder auch nicht). Es gibt eine Kommandozeilen-Option, die die gefundenen fpc.cfgs anzeigt.af0815 hat geschrieben:Schaut dir mal die fpc.cfg's an. bzw. fragen den fpc welche er nimmt auf der Kommandozeile.
Das klappte nach der Installation auf Anhieb.af0815 hat geschrieben:Versuch dann mal eine Minimalbeispiel mit dem fpc zu kompilieren ob das geht.Code: Alles auswählen
program Hello; begin WriteLn('Hello World'); end.
OK.af0815 hat geschrieben:Standardmässig gibt es keine fpc.cfg !! Die muß man sich erst erzeugen und konfigurieren (oder eine alte nehmen)
Siehe auch Erzeugen_Sie_die_Datei_fpc.cfg ist zwar für Win, unter Linux gehts ähnlich.
Also jetzt ?!?!?!?af0815 hat geschrieben:Dann erst kümmere dich um Lazarus.
-Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6790
- 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: Crosscompiling für QNAP (Arm)
Zur fpc.cfg: Soweit ich das durchblickt habe, schaut er zuerst auf /etc/fpc.cfg, dann ins Benutzer home Verzeichnis. Man sieht es, wenn man sich die Infos auf der Kommandozeile anzeigen lässt, welche Pfade er in welcher Reihenfolge absucht. Durch dieses Verhalten kann man eine Systemweite fpc.cfg durch die im Benutzerverzeichnis installierte Überschreiben bzw. ergänzen.
Ev. mit which fpc mal sehen ob überhaupt der richtige verwendet wird.
Installierst du für Crosscompile ? Wenn ja, das auch gleicht mit dem fpc auf der Kommandozeile Crooskompilieren, dann das Ergebnis auf der Zielplattform laufen lassen.
Wenn das soweit alles ok ist, dann habe ich im Lazarusverzeichnis ein make all oder make bigide gemacht (kein ./configure). wenn alle Bibliotheken da waren, ist das durchgelaufen und mit ./startlazarus hat sich der Compiler gemeldet und sich über gdb, fpcpfade,... beschwert. Die dann eingegeben und das erste Hello world ist zum komplieren gegangen.
Das zeigt auch, das nach dem fpc eigentlich der gdb zur Installation/Kompilierung dran ist, besonders wenn man Crosssompiling machen will.
Ev. mit which fpc mal sehen ob überhaupt der richtige verwendet wird.
Installierst du für Crosscompile ? Wenn ja, das auch gleicht mit dem fpc auf der Kommandozeile Crooskompilieren, dann das Ergebnis auf der Zielplattform laufen lassen.
Wenn das soweit alles ok ist, dann habe ich im Lazarusverzeichnis ein make all oder make bigide gemacht (kein ./configure). wenn alle Bibliotheken da waren, ist das durchgelaufen und mit ./startlazarus hat sich der Compiler gemeldet und sich über gdb, fpcpfade,... beschwert. Die dann eingegeben und das erste Hello world ist zum komplieren gegangen.
Das zeigt auch, das nach dem fpc eigentlich der gdb zur Installation/Kompilierung dran ist, besonders wenn man Crosssompiling machen will.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).