Cross Compiler für Arm Installieren Linux

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Cross Compiler für Arm Installieren Linux

Beitrag von mse »

ArmFPC1 hat geschrieben: was mach ich mit diesem Paket. Verstehe ich das richtig das dies die Dateien für den Crosscompiler sind?
Ja, Cross-Compiler mit RTL, Cross-Binutils, Cross-gdb und die für RaspberryPi von MSEgui benötigten arm Bibliotheken. Jeweils für eabi und eabihf.
http://www.lazarusforum.de/viewtopic.php?f=53&t=8283

Code: Alles auswählen

 
2015-03-22
 
Free Pascal cross compiler and tools i386-linux -> arm-linux.
binutils 2.25.51
gdb 7.9.0
 
Das Projekt-Template ist für MSEide, für Lazarus musst du entsprechend anpassen.

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: Cross Compiler für Arm Installieren Linux

Beitrag von ArmFPC1 »

ok und wenn ich diesen Cross Compiler jetzt aus dem Terminal verwenden möchte, wie mach ich dies dann. Ohne das dieser mit Lazarus oder sonder der gleichen verbunden ist.

In dem Verzeichnis eabihf/bin finde ich die verschiedene "Programme" ar , as , gdb usw.. Ist es nun möglich mit z.b. eine vergleichbaren aufrufe ( ar testprogramm.pas) mein Sourcecode Kompilieren zu lassen.

Ist es eigentlich zusätzlich wichtig wohin ich diese eabihf tar-Datei hin entpacke?

Danke und sorry wenn ich mich ungeschickt/dumm anstelle, hab in dem Bereich Freepascal und Linux keine Erfahrung.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Cross Compiler für Arm Installieren Linux

Beitrag von mse »

Um ein MSEgui Programm für RaspberryPi zu kompilieren macht das arm Templateprojekt z.B. diese Kommandozeile:

Code: Alles auswählen

 
/home/mse/packs/standard/svn/fp/arm/install//eabihf/lib/fpc/2.6.5/ppcrossarm -otest -Fu/home/mse/packs/standard/git/mseide-msegui_arm/lib/addon/* -Fi/home/mse/packs/standard/git/mseide-msegui_arm/lib/addon/* -Fu/home/mse/packs/standard/git/mseide-msegui_arm/lib/common/kernel/linux -Fu/home/mse/packs/standard/git/mseide-msegui_arm/lib/common/* -Xg -l -Mobjfpc -Sh -Fcutf8 -n -Xd -viwn -e/home/mse/packs/standard/svn/fp/arm/install//eabihf/bin -Fl/home/mse/packs/standard/svn/fp/arm/install//eabihf/lib -Fu/home/mse/packs/standard/svn/fp/arm/install//eabihf/lib/fpc/2.6.5/units/arm-linux/* -CpARMV6 -CfVFPV2 -gl -O- test.pas
 
"/home/mse/packs/standard/svn/fp/arm/install/" ist das Installationsverzeichnis des Paketes. Die einzelnen Parameter sind hier beschrieben:
http://www.freepascal.org/docs-html/use ... 4-410005.1
Der Compiler meldet dann:

Code: Alles auswählen

 
Free Pascal Compiler version 2.6.5 [2014/11/27] for arm
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for ARMHF
Compiling test.pas
Compiling /home/mse/packs/standard/git/mseide-msegui_arm/lib/common/kernel/msegui.pas
Compiling /home/mse/packs/standard/git/mseide-msegui_arm/lib/common/fpccompatibility/mclasses.pas
[...]
 
Ist es eigentlich zusätzlich wichtig wohin ich diese eabihf tar-Datei hin entpacke?
Nein.

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: Cross Compiler für Arm Installieren Linux

Beitrag von ArmFPC1 »

mse vielen Dank für deine schnellen und ausführlichen Antworten.

Also ich denke bei mir stimmt noch was nicht wenn ich den ppcrossarm in dem Verzeichnis ..../eabihf/lib/fpc/2.6.5/ aufrufe dann kommt. ppcrossarm: command not found. Egal ob ich nur ppcrossarm aufrufe oder zusätzlich Parameter übergeben.

Irgendetwas ist bei mir noch anderes/falsch.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Cross Compiler für Arm Installieren Linux

Beitrag von mse »

Ist das exe bit in der Datei ppcrossarm gesetzt? Auf Linux muss zum Starten "./ppcrossarm" im "..../eabihf/lib/fpc/2.6.5/" Verzeichnis angegeben werden ("./" -> aktuelles Verzeichnis), da das aktuelle Verzeichnis normalerweise auf Unix nicht Bestandteil der $PATH Umgebungsvariable ist.

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: Cross Compiler für Arm Installieren Linux

Beitrag von ArmFPC1 »

mse hat geschrieben:Ist das exe bit in der Datei ppcrossarm gesetzt? Auf Linux muss zum Starten "./ppcrossarm" im "..../eabihf/lib/fpc/2.6.5/" Verzeichnis angegeben werden ("./" -> aktuelles Verzeichnis), da das aktuelle Verzeichnis normalerweise auf Unix nicht Bestandteil der $PATH Umgebungsvariable ist.
ok sorry das war mal ein böser fail von mir :wink:

die Antwort meines Compilers sie dann so aus.

Code: Alles auswählen

 
Free Pascal Compiler version 2.6.5 [2014/11/27] for arm
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for ARMHF
Compiling /home/devel1/Documents/Pascal Tests/tets.pas
Fatal: Can't find unit system used by te
Fatal: Compilation aborted
also command habe ich folgendes: wobei

Code: Alles auswählen

 
./ppcrossarm -otest -Xg -l -Mobjfpc -Sh -Fcutf8 -n -Xd -viwn -e /Downloads/eabihf/bin/ -Fl /home/devel1/Downloads/eabihf/lib/ -Fu /home/devel1/Downloads/eabihf/lib/fpc/2.6.5/units/arm-linux/*-CpARMV6 -CfVFPV2 -gl -O- /home/devel1/Documents/Pascal-Tests/test.pas 
 
die von dir ersten Übergabeparameter die auf "mseide-msegui" habe ich jetzt nicht. Da ich keine Source Code für eine RaspberryPi entwickle sondern für eine AM3517 von TI. Somit gehe ich davon aus das ich dies nicht brauche. Hoffe das es kein miss glaube ist!

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Cross Compiler für Arm Installieren Linux

Beitrag von mse »

ArmFPC1 hat geschrieben:[

Code: Alles auswählen

 
./ppcrossarm -otest -Xg -l -Mobjfpc -Sh -Fcutf8 -n -Xd -viwn -e /Downloads/eabihf/bin/ -Fl /home/devel1/Downloads/eabihf/lib/ -Fu /home/devel1/Downloads/eabihf/lib/fpc/2.6.5/units/arm-linux/*-CpARMV6 -CfVFPV2 -gl -O- /home/devel1/Documents/Pascal-Tests/test.pas 
 

Code: Alles auswählen

 
/home/devel1/Downloads/eabihf/lib/fpc/2.6.5/units/arm-linux/*-CpARMV6
Da fehlt ein Leerzeichen.                                    ^
 
die von dir ersten Übergabeparameter die auf "mseide-msegui" habe ich jetzt nicht. Da ich keine Source Code für eine RaspberryPi entwickle sondern für eine AM3517 von TI. Somit gehe ich davon aus das ich dies nicht brauche. Hoffe das es kein miss glaube ist!
Was läuft denn für ein Betriebssystem? Keines?

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: Cross Compiler für Arm Installieren Linux

Beitrag von ArmFPC1 »

das fehlende Leerzeichen hat leider auch keine andere Kompiler Meldung hervorgerufen.

Doch auf dem Arm Kontroller läuft ein:
Linux dheva01 3.2.12-rt20 #1 PREEMPT RT Fri Jan 18 10:00:59 CET 2013 armv7l GNU/Linux

No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.5 (squeeze)
Release: 6.0.5
Codename: squeeze

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Cross Compiler für Arm Installieren Linux

Beitrag von mse »

"-e /Downloads/eabihf/bin/" ist auch verdächtig, dann hast du hinter "-Fl" und "-Fu" Leerzeichen wo keine hingehören. Mach doch mit einem Editor ein Startscript mit copy-paste. Die nächste Frage ist dann welches ABI dein Target-Linux hat, eabi, eabihf oder etwas anderes?

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: Cross Compiler für Arm Installieren Linux

Beitrag von ArmFPC1 »

jetzt stellt sich für mich die frage wie ich das herausfinden kann. :?:

oder ist es nicht einfacher die Compilierung dann nativ auf dem Arm auszuführen. Ist zwar keine schöne Lösung aber so bringt es mir ja auch nicht wirklich was.

Dann könnte ich mir ja das Paket (http://freepascal.org/down/arm/linux-austria.var) herunterladen und auf dem Target installieren und von dort aus dann meinen Source Code Compilieren!?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Cross Compiler für Arm Installieren Linux

Beitrag von mse »

Die Frage nach dem ABI stellt sich unabhängig davon ob du cross oder native kompilierst. Hast du die Kommandozeile hingekriegt?

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: Cross Compiler für Arm Installieren Linux

Beitrag von ArmFPC1 »

ne das mit der Kommandozeile hab ich noch nicht hinbekommen.
Was mich bisschen verwirrt ist, dass ich den selben Fehler bekomme ob ich Parameter mit übergebe oder nur ppcrossarm pfad/test.pas machen.

Ok verstehe ich das richtig ABI = ARM System Bibliotheken ?!

Wie finde ich das nun raus welche ich da benötige und wo ich die dann finden /herunterladen kann.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Cross Compiler für Arm Installieren Linux

Beitrag von mse »

ArmFPC1 hat geschrieben:ne das mit der Kommandozeile hab ich noch nicht hinbekommen.
Was mich bisschen verwirrt ist, dass ich den selben Fehler bekomme ob ich Parameter mit übergebe oder nur ppcrossarm pfad/test.pas machen.
Dann probiere mal die Dateien im Anhang.

Code: Alles auswählen

 
#!/bin/sh
#change the path below
FPCCROSSINSTALLDIR=/home/mse/packs/standard/svn/fp/arm/install/eabi
#
$FPCCROSSINSTALLDIR/lib/fpc/2.6.5/ppcrossarm -ohello -Xg -l -Mobjfpc -Sh -Fcutf8 -n -Xd -viwn -e$FPCCROSSINSTALLDIR/bin -Fl$FPCCROSSINSTALLDIR/lib -Fu$FPCCROSSINSTALLDIR/lib/fpc/2.6.5/units/arm-linux/* -gl -O- hello.pas
 
/home/mse/packs/standard/svn/fp/arm/install/eabi musst du auf deine Installation anpassen, ich würde fürs erste eabi und nicht eabihf verwenden.

Code: Alles auswählen

 
program hello;
{$ifdef FPC}{$mode objfpc}{$h+}{$endif}
uses
 {$ifdef FPC}{$ifdef unix}cthreads,cwstring,{$endif}{$endif}
 sysutils,xlib; 
           //xlib necessary in order to avoid linking error, probably FPC bug
begin
 writeln('Hello world!');
end.
 
Einfacher kann ich es dir nicht mehr machen. Zur Erinnerung, MSEide würde dir die Konstruktion der Kommandozeile abnehmen, Lazarus vermutlich auch, da kann ich aber nicht helfen.
Ok verstehe ich das richtig ABI = ARM System Bibliotheken ?!
Nein.
http://en.wikipedia.org/wiki/Applicatio ... _interface
Dateianhänge
armhello.gz
(683 Bytes) 111-mal heruntergeladen

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Cross Compiler für Arm Installieren Linux

Beitrag von Scotty »

"Can't find unit system" bedeutet, dass deine fpc Verzeichnise nicht gefunden wurden. "fpc -vt bogus" sagt dir, welche Verzeichnisse benutzt werden.

Code: Alles auswählen

fpc -vt bogus
Using executable path: /usr/lib/fpc/2.6.4/
Using unit path: /usr/lib/fpc/2.6.4/units/x86_64-linux/rtl/
 
ppcrossarm -vt bogus
Using library path: /usr/local/arm/libc/usr/lib/
Using library path: /usr/lib/fpc/2.6.4/units/arm-linux/rtl/
 
Die Angaben stehen in der fpc.cfg

Code: Alles auswählen

# searchpath for units and other system dependent things
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
 
Und dort gehören IMHO auch die EABI hacks hin

Code: Alles auswählen

#ifdef cpux86_64
-Fl/lib
-Fl/usr/lib
#endif
#ifdef cpui386
-Xd
-Fl/usr/lib32
#endif
#ifdef cpuarm
-Xd 
-Fl/usr/local/arm/libc/usr/lib
-Fl/usr/local/arm/lib
-CaEABI 
-Parm 
-CfSOFT
-CpARMV5
#endif
 

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: Cross Compiler für Arm Installieren Linux

Beitrag von ArmFPC1 »

Also erstmal nochmal vielen dank für die ganzen Antworten.

@mse ich hab dein Script angepasst es bei mir auf das richtige Verzeichnis verweist. "FPCCROSSINSTALLDIR=/home/devel1/Download/eabihf"
die weitern Verzeichnisse stimmen auch! Wenn ich die Shell-Datei ausführe kommt: ./compilehello.sh: /home/devel1/Download/eabihf/lib/fpc/2.6.5/ppcrossarm: not found

interessant ist für mich nur das es siehe Bild, dort der ppcrossarm liegt.

Scotty hat geschrieben:"Can't find unit system" bedeutet, dass deine fpc Verzeichnise nicht gefunden wurden. "fpc -vt bogus" sagt dir, welche Verzeichnisse benutzt werden.

Code: Alles auswählen

fpc -vt bogus
Using executable path: /usr/lib/fpc/2.6.4/
Using unit path: /usr/lib/fpc/2.6.4/units/x86_64-linux/rtl/
 
ppcrossarm -vt bogus
Using library path: /usr/local/arm/libc/usr/lib/
Using library path: /usr/lib/fpc/2.6.4/units/arm-linux/rtl/
 
wenn ich das "ppcrossarm -vt bogus" eingebe, dann kommt: ppcrossarm: command not found. bei dem "fpc" geht es da zeigt er mir dann die ganzen paths an.
Es funktioniert auch nicht wenn ich in das Verzeichnis gehe wo der ppcrossarm liegt.

Wenn ich das richtig interpretiere fehlen da doch noch irgendwelche verweise und/oder Installationen.

Was mich auch verwirrt ist, die fp.cfg. Die müsste doch normal in dem Verzeichnis liegen wo auch die Verzeichnisse wie z.b. compuler, ide, installer, usw liegen. Dort ist sie aber nicht mehr aufzufinden, ich glaube ich hab da etwas zerschossen.
Dateianhänge
ppcross.JPG

Antworten