Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Cross fpc von i686 zu powerpc (https://www.delphipraxis.net/170421-cross-fpc-von-i686-zu-powerpc.html)

daniel775 16. Sep 2012 15:15

Cross fpc von i686 zu powerpc
 
Hallo,

ich würde mir gerne eine Development System aufbauen, dass auf Linux (Ubuntu) basiert. Dazu Lazarus in Verbindung mit fpc.

Nur finde ich im www keine brauchbare Anleitung, wie ich fpc für Anwendungen mit Powerpc Architektur übersetze und diesen dann in Lazarus einbinde.

Ich muss dazu sagen, dass ich bisher nur GUI Anwendungen unter Windows entwickelt habe. Hab aber grundlegende Kenntnisse im Umgang mit Linux.

Was brauche ich?

- fpc Source
- binutils (Da gibt verschiedene Packete ! Was ist für was? binutils-2.15-win32-i386-linux oder mingwcross, win32crossbinutils2005 etc.)
Muss ich hier soetwas wie crossbinutils haben? Gibt es das überhaupt?
- bereits installierten Compiler z.B. gcc!? Ich habe einen fpc Compiler in der Version 2.4.0 über das PacketManagement installiert.

Wie gehe ich grob vor?

cd /usr/src
sudo mkdir /usr/src/binutils-build
cd binutils-build
sudo ../binutils-2.22/configure --prefix=/usr/local/powerpc --target=powerpc --without-doc
...
sudo make
...
...
*** BFD does not support target powerpc-unknown-none.
*** Look in bfd/config.bfd for supported targets.

Sieht nicht gut aus !


cd /usr/src/fpc-2.4.4_Source
make build OS_TARGET=linux CPU_TARGET=powerpc (Wie müssen hier der Parameter CROSSBINDIR und weitere aussehen?)
make install

Fragen über Fragen und Fehler über Fehler :cry:

bernhard_LA 16. Sep 2012 21:55

AW: Cross fpc von i686 zu powerpc
 
Liste der Anhänge anzeigen (Anzahl: 1)
im detail kann ich leider nicht helfen ,

kann codetyphon von pilotlogic hier helfen ?

JamesTKirk 17. Sep 2012 10:41

AW: Cross fpc von i686 zu powerpc
 
Zitat:

Zitat von daniel775 (Beitrag 1183165)
- fpc Source
- binutils (Da gibt verschiedene Packete ! Was ist für was? binutils-2.15-win32-i386-linux oder mingwcross, win32crossbinutils2005 etc.)

Hier brauchst du den Source der BinUtils, den du aber schon zu haben scheinst deiner Antwort weiter unten nach zu urteilen.

Zitat:

Zitat von daniel775
Muss ich hier soetwas wie crossbinutils haben? Gibt es das überhaupt?

"crossbinutils" sind das gleich wie "binutils" nur, dass die Plattform auf dem sie laufen ungleich der Zielplattform ist...

Zitat:

Zitat von daniel775
- bereits installierten Compiler z.B. gcc!? Ich habe einen fpc Compiler in der Version 2.4.0 über das PacketManagement installiert.

Für FPC brauchst du keinen GCC, aber zum kompilieren der BinUtils. Wenn GCC noch nicht installiert ist, dann lass einfach deinen Paketmanager das machen.

Ich würde dir übrigens empfehlen FPC 2.6.0 einzusetzen. 2.4.0 ist mittlerweile über 3 Jahre alt. Du kannst die DEB Pakete auf der SourceForge Seite von Free Pascal finden.

Zitat:

Zitat von daniel775
Wie gehe ich grob vor?

cd /usr/src
sudo mkdir /usr/src/binutils-build
cd binutils-build
sudo ../binutils-2.22/configure --prefix=/usr/local/powerpc --target=powerpc --without-doc
...
sudo make
...
...
*** BFD does not support target powerpc-unknown-none.
*** Look in bfd/config.bfd for supported targets.

Sieht nicht gut aus !

1. Lege dir einen Ordner in deinem Home Verzeichnis an, wo du mit Quellcode rumhantierst, dann musst du nicht mit sudo arbeiten außer zum installieren (so sollte es nämlich sein!)
2. Du musst das richtige Target angeben. Du willst für powerpc-linux kompilieren, also würde ich dir "powerpc-linux" als Target empfehlen (steht übrigens auch hier).
3. Der Ablauf beim Erzeugen von Programmen unter Linux (bzw. Unix allgemein) ist normalerweise der folgende:

Code:
./configure PARAMETER
make all
sudo make install
Zitat:

Zitat von daniel775
cd /usr/src/fpc-2.4.4_Source
make build OS_TARGET=linux CPU_TARGET=powerpc (Wie müssen hier der Parameter CROSSBINDIR und weitere aussehen?)
make install

Auch hier würde ich dir empfehlen den Quellcode in deinem Home-Verzeichnis zu lagern (hier empfehle ich dir auch den Quellcode von 2.6.0).

Die Parameter OS_TARGET und CPU_TARGET sind schonmal richtig, du brauchst nur noch CROSSBINDIR, welches das Verzeichnis ist, welches du bei den BinUtils als Prefix angegeben hast plus "/bin", also CROSSBINDIR=/usr/local/powerpc/bin". Eventuell musst du auch noch BINUTILSPREFIX angeben, falls die Programme in dem bin-Verzeichnis (as, ld, etc.) noch ein zusätzliches Präfix haben (z.B. powerpc-linux-as). In dem Fall musst du "BINUTILSPREFIX=powerpc-linux-" mit angeben.

Das sollte hoffentlich genügen. Da ich noch nie nach PowerPC übersetzen musste, kann ich es natürlich nicht bestätigen, jaber ich bin guter Dinge :)

Zitat:

Zitat von daniel775
Fragen über Fragen und Fehler über Fehler :cry:

Ich hoffe ich konnte dir damit weiterhelfen.

Gruß,
Sven

daniel775 17. Sep 2012 20:46

AW: Cross fpc von i686 zu powerpc
 
Danke, danke.

Ich bin zumindest einen Schritt weiter und konnte mir erfolgreich einen fpc Compiler von Linux nach PowerPc bauen.
Nur wenn ich damit ne Simple Source zum Test mit 3 Klassen (Windows.pas, Socket.pas, SysUtils.pas) kompilieren möchte hagelt es fehler. Hab mir das aber schon gedacht. Anschließend hab ich es mit der Windows.pp und Kompilierschalter -Fu versucht. Aber das war auch nicht besser. Fehler wie dos.pp Error: Illegal assembler style specified "ATT" waren dann zu finden.

Möchte mir eigentlich ein kleines Programm für meine auf Linux basierte NAS Box bauen, das über Socket mit meiner Windows Maschine kommuniziert. Unter Windows hab ich für solche Fälle die Klasse von NARSES benutzt und mir ein kleines Protokoll für die kommunikation zwischen den Rechnern gebaut. Wäre natürlich schön wenn das für Linux auch klappt. Erstens bin ich mit der Narses Klasse vertraut und zweitens bräuchte ich mein Protokoll nur etwas modifizieren.

Ich probiere gerade den Tipp von bernhard_LA aus. Wenn das funktioniert, dann ist ja mal genial unter Windows. Ich dachte immer crosscompile unter Windows für Linux sollte man besser gleich vergessen. Wegen den fehlenden libs usw. Aber da scheint ja alles dabei zu sein.

Gruß

JamesTKirk 18. Sep 2012 10:46

AW: Cross fpc von i686 zu powerpc
 
Zitat:

Zitat von daniel775 (Beitrag 1183357)
Ich bin zumindest einen Schritt weiter und konnte mir erfolgreich einen fpc Compiler von Linux nach PowerPc bauen.
Nur wenn ich damit ne Simple Source zum Test mit 3 Klassen (Windows.pas, Socket.pas, SysUtils.pas) kompilieren möchte hagelt es fehler. Hab mir das aber schon gedacht. Anschließend hab ich es mit der Windows.pp und Kompilierschalter -Fu versucht. Aber das war auch nicht besser. Fehler wie dos.pp Error: Illegal assembler style specified "ATT" waren dann zu finden.

Ähm... du verwendest die Unit
Delphi-Quellcode:
Windows
unter Linux... fällt dir was auf? (Hinweis: plattformspezifische Unit)

Zitat:

Möchte mir eigentlich ein kleines Programm für meine auf Linux basierte NAS Box bauen, das über Socket mit meiner Windows Maschine kommuniziert. Unter Windows hab ich für solche Fälle die Klasse von NARSES benutzt und mir ein kleines Protokoll für die kommunikation zwischen den Rechnern gebaut. Wäre natürlich schön wenn das für Linux auch klappt. Erstens bin ich mit der Narses Klasse vertraut und zweitens bräuchte ich mein Protokoll nur etwas modifizieren.
Ich habe keine Ahnung, was diese Klasse von Narses intern verwendet, aber wenn sie Windows spezifische Funktionalitäten verwendet (dazu zählt auch die Verwendung der Unit
Delphi-Quellcode:
Windows
), dann kannst du sie überall außer unter Windows (Win32, Win64, vlt. auch WinCE) vergessen.

Hier kannst du jedoch ein paar Informationen zum Thema Netzwerk finden.

Zitat:

Ich probiere gerade den Tipp von bernhard_LA aus. Wenn das funktioniert, dann ist ja mal genial unter Windows. Ich dachte immer crosscompile unter Windows für Linux sollte man besser gleich vergessen. Wegen den fehlenden libs usw. Aber da scheint ja alles dabei zu sein.
Ich weiß nicht, ob CodeTyphoon das Cross Compilen nach powerpc-linux unterstützt, aber die Aussage, dass man die Bibliotheken braucht ist korrekt. Nur solange du keine Bibliotheken verwendest (zum Beispiel für Threading, SQL Datenbanken, etc.), dann brauchst du sie auch nicht und kannst ausnutzen, dass FPC Executables erzeugt, die nicht von der libc abhängen, sondern die direkt die Schnittstelle des Linuxkernels verwenden.

Gruß,
Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz