fpc-kompilieren: make install

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

fpc-kompilieren: make install

Beitrag von Socke »

Hallo,
Ich versuche gerade einen arm-wince-crosscompiler auf meinem System zu installieren (32bit, Linux/Debian). Das Kompilieren funktioniert wunderbar, aber mit dem installieren komme ich nicht klar.

Code: Alles auswählen

make build OS_TARGET=wince CPU_TARGET=arm FPC=ppc386
erzeugt einen wunderbaren Crosscompiler, den ich auch ausführen kann. Getestet habe ich ihn aber noch nicht.

Code: Alles auswählen

make install OS_TARGET=wince CPU_TARGET=arm FPC=ppc386 INSTALL_PREFIX=/opt/fpc
installiert diverse Win32 Binutils, einen ARM-Compiler (keinen Crosscompiler) sowie die vorkompilierten Units.

Am liebsten wäre mir ja ein (bzw. mehrere) fertige(s) Debian-Package(s) - nur leider bricht make deb [...] beim kopieren des Verzeichnisses fpcsrc/logs ab (da nicht vorhanden).

Da es hier ja einige Leute gibt, die sich ihre Compiler selber bauen, könnt ihr mir doch sicher einen Hinweis geben, wie ich meinen Crosscompiler zum Laufen bekomme. Ein Bash-Script zum rekursiven kopieren der benötigten Dateien möchte ich eigentlich nicht schreiben müssen (aber doch tun, wenn es nicht anders geht).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6765
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: fpc-kompilieren: make install

Beitrag von af0815 »

Schon mal hier (Building_WinCE_cross_compiler_from_sources) geschaut - kann sinngemäß ev. bei dir Verwendung finden. Zusätzlich ist die Build-FAQ oft hilfreich.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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: fpc-kompilieren: make install

Beitrag von Scotty »

Ich kompiliere per make zipinstall oder crosszipinstall und entpacke die Dateien dann in das richtige Verzeichnis.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Socke »

Danke für die Antworten.
af0815 hat geschrieben:Schon mal hier (Building_WinCE_cross_compiler_from_sources) geschaut - kann sinngemäß ev. bei dir Verwendung finden. Zusätzlich ist die Build-FAQ oft hilfreich.
Zum ersten möchte ich sagen:
Now copy those files to your Free Pascal installation.
Klar muss ich das jetzt machen, nur bei den ganzen Packages wird das ein wenig lästig das ganze von Hand zu tun...
Zum zweiten:
fpc/installl/install.sh is the installer script for unix. Nicely demonstrates platform name (GNU->FPC) conversion
Ist es das was ich gesucht habe? Leider sucht es nach gezippten Dateien, die nicht vorhanden sind. Ich werde aber mal weiterlesen.
Scotty hat geschrieben:Ich kompiliere per make zipinstall oder crosszipinstall und entpacke die Dateien dann in das richtige Verzeichnis.
Wie sehen die Aufrufe aus? Wird bei make (cross)zipinstall auch jedesmal vorher alles neu gebaut?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6765
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: fpc-kompilieren: make install

Beitrag von af0815 »

Socke hat geschrieben:
Scotty hat geschrieben:Ich kompiliere per make zipinstall oder crosszipinstall und entpacke die Dateien dann in das richtige Verzeichnis.
Wie sehen die Aufrufe aus? Wird bei make (cross)zipinstall auch jedesmal vorher alles neu gebaut?
make baut nur das neu, was es neu bauen muß oder zum neu bauen vorgesehen wurde vom make-script schreiber.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Socke »

Nach dem Studium der Build-FAQ bin ich zu der Zeile

Code: Alles auswählen

make all install OS_TARGET=wince CPU_TARGET=arm INSTALL_PREFIX=/opt/fpc BINUTILSPREFIX=arm-wince-pe-
gelangt. Herausgekommen ist ein wunderbares Crosscompilat mit allem was dazu gehört. Es wird auch richtig nach /opt/fpc installiert.
Nur leider habe ich irgendwo einen Denkfehler und die falschen Optionen verwendet. Es wird also zuerst ein Crosscompiler erstellt und dann der Compiler cross-compiliert. Ich möchte aber nur den Crosscompiler installieren.
Hat noch jemand einen Zaunpfahl für mich übrig?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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: fpc-kompilieren: make install

Beitrag von Scotty »

Wie sehen die Aufrufe aus? Wird bei make (cross)zipinstall auch jedesmal vorher alles neu gebaut?
Einfach statt "install" "zipinstall" angeben.
Ich möchte aber nur den Crosscompiler installieren.
Den Satz musst du mir übersetzen. Du hast einen Compiler gebaut und installiert, willst ihn aber nur installieren? Ohne zu bauen?

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Socke »

Scotty hat geschrieben:
Ich möchte aber nur den Crosscompiler installieren.
Den Satz musst du mir übersetzen. Du hast einen Compiler gebaut und installiert, willst ihn aber nur installieren? Ohne zu bauen?
Gerne doch. Wenn ich den letzten Befehl ausführe (make all install...) wird zuerst der Crosscompiler (läuft auf i386-linux, kompiliert für arm-wince) erstellt. Mit diesem wird dann der Compiler crosskompiliert (also ein nativer ARM-wince Compiler, der dort läuft). Es wird der native arm-wince Compiler installiert. Auf einem i386-linux kann ich damit relativ wenig anfangen.

Das Ende soll so aussehen: i386-linux (Debian) als Entwicklungsumgebung. Hier werden für mein Navi (arm-wince) die Programme crosskompliert.
Scotty hat geschrieben:Einfach statt "install" "zipinstall" angeben.
Das war mir schon klar, es ging mir eher um den Rest des Aufrufs (CPU_TARGET usw.). Oder baust du nur für dein lokales System?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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: fpc-kompilieren: make install

Beitrag von Scotty »

Wenn ich dich richtig verstehe, wird dein eigener Compiler durch den Crosscompiler überschrieben. So richtig nachvollziehen kann ich aber nicht, dass "make..." etwas anderes macht als "make install...". Was wirklich in der Datei drin ist, kann per "file <name>" oder "readelf <name>" ausgelesen werden.

Ich glaube, dass du an den Parameter was ändern musst (vielleicht crossinstall statt install). Oder du nimmst meine Methode, wodurch auch nichts installiert und überschrieben wird.

Code: Alles auswählen

make crosszipinstall CPU_TARGET=arm OS_TARGET=linux CROSSOPT="-dFPC_ARMEL -CfSOFT -Cparmv5" FPC=/usr/local/lib/fpc/2.5.1/

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Socke »

Scotty hat geschrieben:Wenn ich dich richtig verstehe, wird dein eigener Compiler durch den Crosscompiler überschrieben. So richtig nachvollziehen kann ich aber nicht, dass "make..." etwas anderes macht als "make install...". Was wirklich in der Datei drin ist, kann per "file <name>" oder "readelf <name>" ausgelesen werden.
Meine Sourcen liegen unter /home/simon/Desktop/fpc2.4/fpcbuild-2.4.0/. Das ist das gesamte fpcbuild Archiv von der Freepascal-Webseite. Installiert wird nach /opt/fpc/. Der Aufruf sieht so aus:

Code: Alles auswählen

/home/simon/Desktop/fpc2.4/fpcbuild-2.4.0# make all install OS_TARGET=wince CPU_TARGET=arm INSTALL_PREFIX=/opt/fpc BINUTILSPREFIX=arm-wince-pe- OPT='-gl' FPC=/usr/lib/fpc/2.4.0/ppc386
Der Aufruf file /opt/fpc/lib/fpc/2.4.0/ppcarm.exe liefert "ppcarm.exe: PE32 executable for MS Windows 32-bit" zurück; wine ppcarm.exe gibt "Trying to load PE image for unsupported architecture (ARM)" aus.
file /home/simon//Desktop/fpc2.4/fpcbuild-2.4.0/fpcsrc/compiler/ppcrossarm liefert "ppcrossarm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped" zurück.

Ich habe also den crosscompiler im build-Verzeichnis und den nativen arm-wince Compiler im Installationsverzeichnis.
Scotty hat geschrieben:Ich glaube, dass du an den Parameter was ändern musst (vielleicht crossinstall statt install). Oder du nimmst meine Methode, wodurch auch nichts installiert und überschrieben wird.

Code: Alles auswählen

make crosszipinstall CPU_TARGET=arm OS_TARGET=linux CROSSOPT="-dFPC_ARMEL -CfSOFT -Cparmv5" FPC=/usr/local/lib/fpc/2.5.1/
ARGH. Ich möchte einmal die Ausgabe von make help zitieren:

Code: Alles auswählen

/home/simon/Desktop/fpc2.4/fpcbuild-2.4.0# make help
Makefile:2286: Using system default libgdb file located in /usr/lib/libgdb.a
 
Targets
all Alias for build
build Build a new compiler and all packages
install Install newly build files
zipinstall Create zip/tar of installed files
singlezipinstall Alias for zipinstall
 
Distribution Targets:
rpm Build linux .rpm packages
deb Build linux .deb packages
inno Build Windows (Innosetup) based installer
innox64 Build Win32-Win64 cross compiler installer
innoce Build Win32-Wince cross compiler installer
tar Build .tar installer
 
FV based installer Targets:
go32v2zip Build .zip files for go32v2
os2zip Build .zip files for OS/2
sourcezip Build .zip files for the sources
Steht da irgendetwas von crossinstall? Nein! Also gebe einfach make crossinstall ein und der crosscompiler wird installiert. So einfach ist das. Wer hätte denn nicht daran gedacht, dass install immer nur einen Compiler für die aktuelle Plattform erstellt? Niemand - also muss man das auch nicht dokumentieren. (Ich bräuchte hier jetzt nur noch einen passenden Nicht-Smily :D)

Wo gibt es eine Dokumentation über die Parameter CROSSOPT und die dort angegeben Compiler-Parameter? Die könnten evtl. noch hilfreich sein, wenn ich ein Programm zum Laufen bringen will.

Wenn ich ein Programm laufen habe, schreib ich mal eine Zusammenfassung, wie das alles geht und was weiß ich noch.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6765
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: fpc-kompilieren: make install

Beitrag von af0815 »

Socke hat geschrieben:Wo gibt es eine Dokumentation über die Parameter CROSSOPT und die dort angegeben Compiler-Parameter? Die könnten evtl. noch hilfreich sein, wenn ich ein Programm zum Laufen bringen will.
So wie es aussieht, nur das make File selbst ist die Doku :-(

Ich habe beim Suchen nicht anders gefunden. Auch im Freepascal 2 Buch wird das Thema Cross maximal als Passante behandelt. Eine Quelle ist die Build FAQ.

So wie es sich mir bisher bietet, zuerst den 'normalen' Compiler installieren und den Crosscompiler nur erzeugen, selbst umkopieren, die fpc.cfg auf die Plattformen anpassen und dann die fcl etc. für die neue Crossplattform erstellen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Socke »

af0815 hat geschrieben:So wie es aussieht, nur das make File selbst ist die Doku :-(

Ich habe beim Suchen nicht anders gefunden. Auch im Freepascal 2 Buch wird das Thema Cross maximal als Passante behandelt. Eine Quelle ist die Build FAQ.

So wie es sich mir bisher bietet, zuerst den 'normalen' Compiler installieren und den Crosscompiler nur erzeugen, selbst umkopieren, die fpc.cfg auf die Plattformen anpassen und dann die fcl etc. für die neue Crossplattform erstellen.
Schade...
make crossinstall installiert die i386-win32 Crossbinutils, was unter linux recht wenig Sinn hat. Zum einen gibts die nativ als Linux-ELF und zum anderen weiß ich nicht, wie man den fpc dazu bekommt alles über weine zu starten :D
Die fpc.cfg werde ich nur noch um ein binutils-prefix erweitern; der Rest (Pfade) wird schon mit Variablen verteilt.
Ich werde mal versuchen noch ein Debian-Paket zu bauen.

Kann mir noch jemand zu Scottys CROSSOPT-Parametern etwas sagen:
-CfSOFT - Fließkommaoperationen werden durch die Software emuliert
-dFPC_ARMEL - ist wohl eine bestimmte Calling-Convention. Wie finde ich heraus, ob ich die brauche oder nicht?
-Cparmv5 - Instruction Set für ARM-Prozessoren
Wie kann man herausfinden, welches Instruction Set und welche FPU (falls überhaupt) in einem Gerät verbaut ist, WinCE sagt, ich hätte einen Centrality ARM926T-AT4X0A, synce-pstatus gibt Processor architecture: 5 (ARM), Processor type: 2577 (StrongARM), Page size: 0x10000 aus.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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: fpc-kompilieren: make install

Beitrag von Scotty »

"ppcarm.exe: PE32 executable for MS Windows 32-bit"
"ppcrossarm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped"
Es kann doch nicht sein, dass der gleiche make-Prozess zu verschiedenen Ergebnissen führt! Man korrigiere mich, aber "cross" bedeutet, dass ein Linux Executable erzeugt wird, mit dem Code für ein anderes System erzeugt werden kann. Du versuchst, per make ein Windows Programm zu erzeugen, was aber IMHO nicht so gedacht ist.
Wo gibt es eine Dokumentation über die Parameter
Irgendwo liegt ein PDF mit einigen 100 Seiten nur zum Erzeugen des Compilers. Ich glaube, ist war eine private .nl Seite. Suchen kannst du aber selbst :mrgreen:
Viele Informationen gibt es auch im englischen Lazarusforum (unter anderem den gesuchten Link). Während hier wenig zu WinCE diskutiert wird, gibt es dort einige Threads.
make crossinstall installiert die i386-win32 Crossbinutils,.. Zum einen gibts die nativ als Linux-ELF
make erzeugt den Compiler und die passende FCL, "install" verschiebt diese. Die Binutils (as, ld etc) sind eine Voraussetzung dafür. Mingw32 sind Windows Binutils, die unter Linux genutzt werden können. Ob man das nativ nennen kann...
Kann mir noch jemand zu Scottys CROSSOPT-Parametern etwas sagen:
Du hast schon alles geschrieben. Ich habe ein Sheeva-Plug für das ich auf meinem Hauptrechner kompiliere. Dazu gibt es einen Crosscompiler "ppcrossarm" (file meldet für den "ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.4.0, stripped"), der Code zu ARM Programmen kompilieren kann (file sagt dann ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped).
Wie kann man herausfinden, welches Instruction Set und welche FPU (falls überhaupt) in einem Gerät verbaut ist
Vielleicht hilft dir http://en.wikipedia.org/wiki/ARM_architecture" onclick="window.open(this.href);return false;

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6765
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: fpc-kompilieren: make install

Beitrag von af0815 »

Socke hat geschrieben:Centrality ARM926T-AT4X0A
Recht Interessant, es dürfte sich um einen ähnlichen Prozessor handeln wie beim OpenMoko/FreeRunner verbaut wurde. Ich bin auf der Baustelle (OpenMoko) unterwegs.

Ein Link dazu (PDF Datasheet vom ARM 920T) hier bei Atmel
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Socke »

Scotty hat geschrieben:Es kann doch nicht sein, dass der gleiche make-Prozess zu verschiedenen Ergebnissen führt! Man korrigiere mich, aber "cross" bedeutet, dass ein Linux Executable erzeugt wird, mit dem Code für ein anderes System erzeugt werden kann. Du versuchst, per make ein Windows Programm zu erzeugen, was aber IMHO nicht so gedacht ist.
Ich versuche native (i386-linux) Programme zu erzeugen; aber wahrscheinlich ist meine installierte Glaskugel zu alt um das zu erraten.

[quote="Scotty]
Wie kann man herausfinden, welches Instruction Set und welche FPU (falls überhaupt) in einem Gerät verbaut ist
Vielleicht hilft dir http://en.wikipedia.org/wiki/ARM_architecture[/quote" onclick="window.open(this.href);return false;]
Wikipedia listet nur die Prozessoren auf, die unter arm.com gelistet sind. Mein ARM926T ist dort nicht dokumentiert (habe ich auch irgendwo bei einem Google-Ergebnis gelesen).
af0815 hat geschrieben:
Socke hat geschrieben:Centrality ARM926T-AT4X0A
Recht Interessant, es dürfte sich um einen ähnlichen Prozessor handeln wie beim OpenMoko/FreeRunner verbaut wurde. Ich bin auf der Baustelle (OpenMoko) unterwegs.

Ein Link dazu (PDF Datasheet vom ARM 920T) hier bei Atmel
Die technische Dokumentation hilft mir glaub ich wenig, herauszufinden welchen Prozessor ich überhaupt habe. Der ARM920T ist ein ARMv4T - ich werds also mal mit ARMV4 versuchen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten