cross compile

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
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:

cross compile

Beitrag von Scotty »

Beim Suchen nach einer Lösung für eine fehlende libpthread bin ich auf diese meiner Meinung nach sehr schöne Anleitung gestoßen: http://www.rpdev.net/home/node/33" onclick="window.open(this.href);return false;. Bei mir war das Problem, dass in /lib32 ein paar softgelinkte .so-Files gefehlt haben (/lib32/libpthread.so -> /lib32/libpthread.so.0). Aber die Anleitung kann vielleicht mal für jemanden hilfreich sein.

Marcovaldo
Beiträge: 43
Registriert: Mo 20. Okt 2008, 21:08

Wer kann mir einen i386.linux auf arm.linux compiler bauen?

Beitrag von Marcovaldo »

Hallo,

Auf die Gefahr hin dass ich meinen Ruf hier verliere, bevor ich noch einen habe....
(Da will jemand von einer Kita an der Hand genommen werden....)

Hat jemand einen fertig gebauten crosscompiler um unter Ubuntu für arm-linux crosszukompilieren
(die alte arm-linux-fpc-2.0.4.i386-linux.tar ist ja leider offline...)

Dafür möchte ich ein Bounty von Euro 200 ausloben(oder was soll es kosten?)

Marcovaldo

PS:
Warum ich es nicht einfach selbst mache: Ich bin derzeit zeitlich extrem unter Druck, und hab einfach keinen ausreichend klaren Kopf um die HowTos durchzugehen.
Sollte aber eine Grundsatzentscheidung betreffend einer Hardware treffen, wo mir Bauteile auf End of Life kippen und dringend Ersatz gesucht wird...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7043
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: Wer kann mir einen i386.linux auf arm.linux compiler bauen?

Beitrag von af0815 »

Marcovaldo hat geschrieben:Hat jemand einen fertig gebauten crosscompiler um unter Ubuntu für arm-linux crosszukompilieren
(die alte arm-linux-fpc-2.0.4.i386-linux.tar ist ja leider offline...)
Hast du eine Testumgebung unter Ubuntu die man verwenden kann (Emulator). Beschreibe bitte die arm-linux Umgebung/Toolchain etwas mehr.
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: cross compile

Beitrag von mschnell »

Anscheinend hat hier noch niemand einen Cross Compiler für ARM-Linux aufgesetzt / getestet.

Ich brauche das irgendwann und bin deshalb sehr interessiert...

-Michael

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7043
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: cross compile

Beitrag von af0815 »

mschnell hat geschrieben:Anscheinend hat hier noch niemand einen Cross Compiler für ARM-Linux aufgesetzt / getestet.

Ich brauche das irgendwann und bin deshalb sehr interessiert...

-Michael
Probiert schon, bin aber an der Version des arm (Openmoko) am Ende gescheitert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Marcovaldo
Beiträge: 43
Registriert: Mo 20. Okt 2008, 21:08

Re: Wer kann mir einen i386.linux auf arm.linux compiler bauen?

Beitrag von Marcovaldo »

af0815 hat geschrieben: Hast du eine Testumgebung unter Ubuntu die man verwenden kann (Emulator). Beschreibe bitte die arm-linux Umgebung/Toolchain etwas mehr.
[/quote]

Hallo af,

Danke mal für die rasche Antwort!

Leider gibt es keine virtuelle Testumgebung, nur Hardware(siehe unten)
Am Laptop habe ich Ubuntu 9.10 oder Debian Lenny zur Verfügung.

Als Target sind zwei Systeme (derzeit) geplant:
1) DIL PC von SSV (Atmel Arm AT91RM9200; ich lese gerade Thumb-Befehlssatz[ist das nicht ein KO -Kriterium :-0 ?)**
http://www.dilnetpc.com/dnp0069.htm" onclick="window.open(this.href);return false;
der dafür erhältliche arm-linux-gcc hat die Version 2.95.2

2) Ein Schienenmontierbares System, Auch Arm9
http://www.vscom.de/6802.htm#top" onclick="window.open(this.href);return false;
Auf diesem läuft ein Debian Etch (dort habe ich den nativen FPC auch schon am laufen, wohingegen
System #1 zu klein ist um den Compiler auch dort laufen zu lassen; Eine der Ideen ist es daher, auf dem Alekto für das kleinere
System zu kompilieren, ein crosscompiler wäre aber natürlich besser)

Für beide Systeme liesse sich die Hardware eventuell wo hin schicken(vorbeibringen, lese gerad NÖ...)
oder ich kann sie ins Netz hängen(um per Fernzugriff zu testen)
((sowas sollte kurzfristig(bis morgen) möglich sein))


Typische Anwendungen für beide sind Protokollkonverter
(zB Ethernet auf Seriell mit speziellen Protokollen auf beiden
Seiten...) - Also (vorerst) kein GUI, kein Xfree, nur serielle
und TCP/IP kommunikation.


**) Laut Datenblatt kann er aber beide OPcodes:
– ARM High-performance 32-bit Instruction Set
– Thumb High Code Density 16-bit Instruction Set
ausserdem hat er eine MMU


LG,

Marcovaldo

Marcovaldo
Beiträge: 43
Registriert: Mo 20. Okt 2008, 21:08

Re: cross compile

Beitrag von Marcovaldo »

af0815 hat geschrieben:
mschnell hat geschrieben:Anscheinend hat hier noch niemand einen Cross Compiler für ARM-Linux aufgesetzt / getestet.

Ich brauche das irgendwann und bin deshalb sehr interessiert...

-Michael
Probiert schon, bin aber an der Version des arm (Openmoko) am Ende gescheitert.
Der Arm-9 des Alekto(was der genau verbaut hat kann ich am Abend checken..) dürfte ja kompatibel sein, da der native (arm-linux) FPC läuft.
So Alektos liessen sich auch für Testzwecke aufstellen (kosten etwa 200-250 Euro).

Eine Frage in diesem Zusammenhang: Läuft ein gdb unter arm-linux schon ? (die installierte FPC version (ist aber nicht mehr taufrisch, da die letzen Tests schon etwa ein Jahr zurückliegen) hat die debug-menüs gesperrt.

Interessant wäre für mich auch ein Win32 auf WindowsCE (allerdings i386, nicht ARM) crosscompiler, da einige Industriesteuerungen sowas verwenden und
ich dort mit Delphi ausgesperrt bin.

Wenn sich jemand fände, hier Hand anzulegen würde ich gerne finanziell dazu beitragen(eventuell die Details per private mail absprechen).

LG,

Marcovaldo

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 compile

Beitrag von Scotty »

Mit einem cross compiler allein ist es leider nicht getan. Da wären noch binutils, libraries und fcl/lcl. Sonst wird nur ein "Hello World" funktionieren.

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: Wer kann mir einen i386.linux auf arm.linux compiler bauen?

Beitrag von mschnell »

Marcovaldo hat geschrieben:1) DIL PC von SSV (Atmel Arm AT91RM9200; ich lese gerade Thumb-Befehlssatz[ist das nicht ein KO -Kriterium :-0 ?)**
Anscheinend nicht. Hier eine message von soeben aus der fpc-develop Mailing List:

fpc-develop hat geschrieben: 1)
stm32f103 is a thumb2 only device, and you cannot generate a rtl for both <=armv5 and thumb2. You need to modify the makefile to generate either a thumb2 rtl or a arm rtl. You can do that by removing the arm core units from CPU_UNITS and overriding the FPC_OPT to include -Cpcortexm3

2)
You don't set the instruction set. You have to override it if you compile for a specific chip, when you call the compiler, otherwise it'll simply default to armv5, no matter what the compiler(rtl) was built for

A short guide, which you probably already knew:

To include a new arm chip, you have to edit compiler/arm/cpuinfo.pas:
-Add an identifier in tcontrollertype
-Add a related name in controllertypestr
-Add a unit name string in controllerunitstr

-Create a unit in rtl/embedded/arm/ with startup code like the other files

-Create a linkerscript in compiler/systems/t_embed.pas which matches the memory map of the target device
Soweit ich mich erinnere, ist AT91RM9200 aber gar nicht Thumb-only (wäre er sonst ein ARM9 ?). Mit einem "nicht-Thumb"-Linux sollte also auch ein nicht-Thumb Lazarus-Programm laufen.

-Michael
Zuletzt geändert von mschnell am Mo 19. Apr 2010, 17:00, insgesamt 2-mal geändert.

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: Wer kann mir einen i386.linux auf arm.linux compiler bauen?

Beitrag von mschnell »

Marcovaldo hat geschrieben:Typische Anwendungen für beide sind Protokollkonverter (zB Ethernet auf Seriell mit speziellen Protokollen auf beiden Seiten...) - Also (vorerst) kein GUI, kein Xfree, nur serielle und TCP/IP kommunikation.
Genau das habe ich auch vor. Da ich aber eine Toolbox zum Portieren von Delphi-Programm bauen muss, brauche ich eine Simulation für die GUI und für gewisse Delphi/Windows-features. Vor allem Threads, Timer und eine Event-Queue für den Main Thread in Delphi-Kompatibler Art. Eine "Remote-Gui" dafür habe ich auch in Planung. Es ist noch einiges zu tun ...

-Michael
Zuletzt geändert von mschnell am Mo 19. Apr 2010, 17:01, insgesamt 1-mal geändert.

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: cross compile

Beitrag von mschnell »

Marcovaldo hat geschrieben:Eine Frage in diesem Zusammenhang: Läuft ein gdb unter arm-linux schon ? (die installierte FPC version (ist aber nicht mehr taufrisch, da die letzen Tests schon etwa ein Jahr zurückliegen) hat die debug-menüs gesperrt.
Viel praktischer fände ich Cross-compiling mit remote-gdb (nur ein kleines "gdbhost"-Programm auf dem ARM über TCP/IP gekoppelt mit dem PC, auf dem Lazarus läuft). Das sollte eigentlich mit der neusten Lazarus-Version an's Laufen zu bekommen sein.

-Michael

Marcovaldo
Beiträge: 43
Registriert: Mo 20. Okt 2008, 21:08

Re: Wer kann mir einen i386.linux auf arm.linux compiler bauen?

Beitrag von Marcovaldo »

Fein, das bestätigt meine Hoffnung, mit FPC dafür bauen zu können(So hab ich das mit dem dual Opcode auch interpretiert, wollte aber eine Bestätigung von
wissender Seite...)

Christian

Marcovaldo
Beiträge: 43
Registriert: Mo 20. Okt 2008, 21:08

Re: cross compile

Beitrag von Marcovaldo »

mschnell hat geschrieben: Viel praktischer fände ich Cross-compiling mit remote-gdb (nur ein kleines "gdbhost"-Programm auf dem ARM über TCP/IP gekoppelt mit dem PC, auf dem Lazarus läuft). Das sollte eigentlich mit der neusten Lazarus-Version an's Laufen zu bekommen sein.
-Michael
Sehe ich auch so:
Remote Debug besser local Debug besser Leuchtdiode :-O


Betreffend Delphi nach Lazarus:
Da können wir uns eventuell ein wenig Arbeit teilen. Ähnliches steht bei mir (zwar mit geringerer Dringlichkeit) auch an(für Target WinCE/i386 wo ich
derzeit mit Delphi keine chance habe...

Jedenfalls gibt es etwa 15 .. 20 Applikationen (ohne GUI), die von BP7 (Dos) nach FPC gehoben werden wollen. Da muss ich mir auch Emulations-Units etc
bauen.

Ich werde mir die Targets nochmals heute Abend vorknüpfen und melde mich morgen wieder mit mehr Infos, bzw. ob und was ich eventuell
zum laufen brachte.

LG

Christian

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: cross compile

Beitrag von mschnell »

Marcovaldo hat geschrieben:Betreffend Delphi nach Lazarus:
Da können wir uns eventuell ein wenig Arbeit teilen. Ähnliches steht bei mir (zwar mit geringerer Dringlichkeit) auch an(für Target WinCE/i386 wo ich
derzeit mit Delphi keine chance habe...
Momentan kreiert mein Widget-Type die Interna eines Form, das im normalen Form-Designer definiert wurde, in "Application.FormCreate" zu Laufzeit und ruft danach OnFormCreate auf.

In "Application.Run" ruft das Form dann auch "OnActivate" auf. Dafür habe ich momentan eine ganz rudimentäre Event-Queue eingebaut.

Später werde ich dann den LCL Event-Queue Sourcecode aus dem GTK-Interface (als Include-Datei) verwenden.

Momentan versuche ich. herauszubekommen, wie "Application.FormCreate" auf dem Form aus den gespeicherten Ressourcen einen Label kreiert.

Ich schicke Dir was zum Testen, sobald ich etwas weiter bin.

Gruß,
-Michael

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 compile

Beitrag von mse »

mschnell hat geschrieben:Das sollte eigentlich mit der neusten Lazarus-Version an's Laufen zu bekommen sein.
Mit MSEide auch, MSEide hat sogar ein eigenes ARM CPU Fenster:
cpuarm.png
cpuarm.png (10.2 KiB) 2946 mal betrachtet
Ich benutze MSEide unter anderem zur Entwicklung von ATMEL AVR32 Programmen, allerdings in C. Debugging mittels gdbproxy, hier die notwendigen Einstellungen:
remotedebug.png

Antworten