Crosscompiling für QNAP (Arm)

Für Installationen unter MacOS u.a. Betriebssystemen
Antworten
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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

af0815 hat geschrieben:Ev. mit which fpc mal sehen ob überhaupt der richtige verwendet wird.

Das ist der richtige (es wird sowieso immer derselbe verwendet, egal welche Compiler-Version. Dafür ja der Symlink zu ???/lib/fpc/?.?.?/ppc???). Wichtiger ist aber, dass es der richtige ppc ist. Das kann man einfach feststellen, indem man fpc ohne Parameter aufruft. Dann sagt er die Version (2.1.7) und das Datum, zu dem er erstellt worden ist.

af0815 hat geschrieben: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.

Erstmal nicht (einfach nur compilieren kann ich ja bereits direkt auf der Ziel-Platform).
Das Ziel ist, mit Lazarus Cross zu kompilieren und remote zu debuggen. Dazu soll erstmal das aktuelle Lazarus aus dem svn laufen. Auf Suse klappt das seit Jahren, mit Debian muss ich erst noch warm werden.
Danach muss natürlich der Cross-Compiler aus den aktuellen svn Sourcen erstellt werden.

af0815 hat geschrieben: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.


Ich bin ziemlich sicher, dass das Problem beim Compilieren von Lazarus an fpc.cfg liegt: es fehlt ihm der korrekte Pfad zu den RTL und FCL Units, die ich ja "irgendwo" (in einem "svn"-Verzeichins) installiert habe. Ich kann erst am Mittwoch (im Büro) nachschauen, wieso das auf Suse immer funktioniert hat.

af0815 hat geschrieben:Das zeigt auch, das nach dem fpc eigentlich der gdb zur Installation/Kompilierung dran ist, besonders wenn man Crosssompiling machen will.

Da ich ja vordringlich die "ssh-Mthode" ans Laufen bringen will, ist das (noch) nicht aktuell. Da wird ja einfach der normale gdb auf dem Zielsystem verwendet und ein gdb auf dem Entwicklungsrechner ist dabei gar nicht im Einsatz. Schaun wir mal...

-Michael

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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

af0815 hat geschrieben:Siehe auch Erzeugen_Sie_die_Datei_fpc.cfg ist zwar für Win, unter Linux gehts ähnlich.


Das nützte leider nicht viel :(

fpcmkcfg mit irgendwelchen parametern macht bei mir nichts sinnvolles.


Ich hatte Erfolg mit folgender Methode:

- fpcmkcfg suchen
. "fpcmkcfg > fpc.cfg"
- dann wird im aktuellen Directory eine default fpc.cfg-Datei erzeugt.
- die habe ich nach /etc kopiert
- am Ende der Datei habe ich "-Fu /usr/local/lib/fpc/2.7.1/units/x86_64-linux/*" eingetragen (das geht mit "$fpctarget" oder ähnlich sicher schöner, ich weiß aber nicht wie)
- dann musste ich noch die Zeile "-Rdefault use default assembler" auskommentieren (das beißt sich anscheinend mit x86_64)

danach konnte ich
make bigide machen

-Michael
Zuletzt geändert von mschnell am Mo 11. Feb 2013, 14:53, insgesamt 2-mal geändert.

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

Beitrag von af0815 »

Nimm die alte fpc.cfg und ändere die Pfade richtig. Ich schau auch mal nach, wieso das mit dem Erstellen nicht klappen soll.

Edit:

ohne Parameter -o sollte es ja der Standardoutput sein. Funktioniert das ?
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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

af0815 hat geschrieben:ohne Parameter -o sollte es ja der Standardoutput sein. Funktioniert das ?
genau das habe ich getan (siehe geänderten Beitrag oben)

Lazarus 1.1 läuft und ich kann lokal compilieren und Debuggen.

Nächster Schritt:

Cross-Kompilieren. :D

Danke,
-Michael

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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

af0815 hat geschrieben:Für die TS 212 und TS-259PII sollte es diese Datei sein arm-2007q3-51-arm-none-linux-gnueabi.bin.


Hi,
Wenn ich versuche, diese Datei zu starten kommt ein Fehlermeldung:

....
Launching installer...

'SWING' UI not supported by VM. Reverting to AWT.
Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
....

Ich vermute, "VM" ist hier die Java Virtual Machine und nicht VMWare ?!?!?!


Als root bekommt man in Debian Squeeze nur ein Kommandozeilen-Interface.

Da kommt dann die Fehlermeldung,. dass kein X Server erreichbar ist.

Wie kann ich wohl an die ARM Library Dateien kommen ? (Der Rest des Sourcery-Zeugs wird ja nicht gebraucht). Im Büro habe ich eine komplette Sourcry Installation mit Eclipse und so. Aber für 68 K und nicht für ARM :(

-Michael

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

Beitrag von af0815 »

mschnell hat geschrieben:
af0815 hat geschrieben:Für die TS 212 und TS-259PII sollte es diese Datei sein arm-2007q3-51-arm-none-linux-gnueabi.bin.

Wenn ich versuche, diese Datei zu starten kommt ein Fehlermeldung:

Ich habe als normaler Benutzer auf die GUI angemeldet und dort ein Rootterminal eröffnet. Oder halt ein normales Terminal und mittel sudo gearbeitet.
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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

af0815 hat geschrieben:Ich habe als normaler Benutzer auf die GUI angemeldet und dort ein Rootterminal eröffnet. Oder halt ein normales Terminal und mittel sudo gearbeitet.


OK, das neu installierte Debian Sqeeze erlaubt für den (einzigen) normalen Benutzer kein "sudo". Das kann man aber wohl irgendwo einstellen...

-Michael

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

Beitrag von af0815 »

/etc/sudoers
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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

Yep.

Es ist aber eigentlich nicht besonders sinnvoll die komplette Sourcery "G++" Toolchain zu installieren, wenn wir nur die GNU Libraries brauchen. Ich denke, da das GPL-Software ist, können wir es Problemlos extrahieren und im Wiki als tgz zur Verfügung stellen. Diese GNU Librarysollte sollte doch eigentlich für alle ARM v5 le Systeme passen.

-Michael

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

Beitrag von af0815 »

Es gibt viele Wege die zum Ziel führen.
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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

sudo klappt jetzt (natürlich)

Als root passiert aber dasselbe beim Aufrufen des installations-Sycrips:

'SWING' UI not supported by VM. Reverting to AWT.
Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)

möglicherweise brauche ich ja eine aktuellere Java VM ?!?!?

Ich habe:

mschnell@MSchnell-XP:~/Download/crosscompile$ java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.13) (6b18-1.8.13-0+squeeze2)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

oder das Zeug funktioniert auf 64 Bit nicht.

-Michael

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

Beitrag von af0815 »

Das kann sein, ich habe nur ein 32 Bit wheezy verwendet. Oder du brauchst noch die 32 Bit Version.
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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

Auf Suse 32 Bit lässt es sich problemlos installieren....

- Michael

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

Beitrag von af0815 »

Es gibt davon auch ein tar-archiv. Liegt im selben Verzeichnis am FTP oben.
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: Crosscompiling für QNAP (Arm)

Beitrag von mschnell »

Ich habe die Dateien in Sourery bin auf den Rechner kopiert und den "make crossinstall" entsprechend ausgeführt.

Klappt leider nicht und vor allem gibt es keine sinnvolle Fehlermeldung.

Es werden diverse Dateien übersetzt und dann kommt:

Code: Alles auswählen

/home/mschnell/Download/crosscompile/bin/arm-none-linux-gnueabi-as  -o /home/mschnell/Download/svn/fpc/trunk/rtl/units/arm-linux/cprt0.o arm/cprt0.as
/home/mschnell/Download/crosscompile/bin/arm-none-linux-gnueabi-as  -o /home/mschnell/Download/svn/fpc/trunk/rtl/units/arm-linux/gprt0.o arm/gprt0.as
/home/mschnell/Download/crosscompile/bin/arm-none-linux-gnueabi-as  -o /home/mschnell/Download/svn/fpc/trunk/rtl/units/arm-linux/ucprt0.o arm/ucprt0.as
/home/mschnell/Download/svn/fpc/trunk/compiler/ppcrossarm -Ur -Parm -XParm-none-linux-gnueabi- -Xr -XX -CX -Ur -Xs -O2 -n -Fi../inc -Fi../arm -Fi../unix -Fiarm -FD/home/mschnell/Download/crosscompile/bin -FE. -FU/home/mschnell/Download/svn/fpc/trunk/rtl/units/arm-linux -dFPC_ARMEL -darm -dRELEASE  -Us -Sg system.pp
make[5]: *** [system.ppu] Killed
make[5]: Leaving directory `/home/mschnell/Download/svn/fpc/trunk/rtl/linux'
make[4]: *** [fpc_smart] Error 2



Der cross-Assembler (von Sourcery) scheint also zu laufen und dann wird "/home/mschnell/Download/svn/fpc/trunk/compiler/ppcrossarm" gestartet umn die RTL zu übersetzen und stürzt anscheinend ab.

Im Prinzip läuft das Executable:

Code: Alles auswählen

mschnell@MSchnell-XP:~/Download/svn/fpc/trunk/compiler$ ./ppcrossarm 
Free Pascal Compiler version 2.7.1 [2013/02/14] for arm
Copyright (c) 1993-2013 by Florian Klaempfl and others
/home/mschnell/Download/svn/fpc/trunk/compiler/ppcrossarm [options] <inputfile> [options]
Put + after a boolean switch option to enable it, - to disable it
  -a     The compiler doesn't delete the generated assembler file


und

Code: Alles auswählen

mschnell@MSchnell-XP:~$ /home/mschnell/Download/svn/fpc/trunk/compiler/ppcrossarm -Tlinux -O -XP -Fu/home/mschnell/Download/svn/fpc/trunk/rtl/units/arm-linux -XParm-none-linux-gnueabi--FD/home/mschnell/Download/crosscompile hello1.pas
Free Pascal Compiler version 2.7.1 [2013/02/14] for arm
Copyright (c) 1993-2013 by Florian Klaempfl and others
Target OS: Linux for ARMEL
Compiling hello1.pas
PPU Loading /usr/local/lib/fpc/2.7.1/units/x86_64-linux/rtl/system.ppu                                                                                                                                                                                                       
PPU is compiled for another processor                                                                                                                                                                                                                                         
Fatal: Can't find unit system used by hello                                                                                                                                                                                                                                   
Fatal: Compilation aborted   


Klar: System.ppu konnte ja nicht erzeugt werden und ist für ARM auf de, Rechner nicht vorhanden.

-Michael

Antworten