Cross-Compilieren
-
- 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
Cross-Compilieren
Ich weiß, dass das Thema schon öfters besprochen worden ist, und ich habe auch selber (mit Linux und unterschiedlichen CPUs, relativ erfolglos) daran geforscht, aber ich habe erst jetzt einen konkreten vermutlich relativ üblichen und einfach lösbaren Anwendungs-Fall.
Ich habe Lazarus und fpc "Out of the box" (also nicht die svn-Version, mit der ich auf Linux manchmal Basis-Entwicklungen mache) auf Windows10 64 Bit installiert. Also die 64 Bit Lazarus/fpc Variante.
Nun möchte (muss) ich ein fertig getestetes Programm für Windows 32 Bit übersetzen.
Man kann ja das Ziel-Betriebssystem (und die Ziel-CPU-Familie und den Ziel-Prozessor) in den Projekt-Optionen einstellen, aber natürlich sind die FPC-Dateien dafür nicht da.
Fehlermeldung:
Compiler "C:\lazarus\fpc3.0.0\bin\x86_64_win64\fpc.exe" unterstützt nicht das Ziel i386-win32
Hat jemand einen gradlinig beschreibbaren funktionierenden Weg gefunden, das an's Laufen zu bringen ?
-Michael
Ich habe Lazarus und fpc "Out of the box" (also nicht die svn-Version, mit der ich auf Linux manchmal Basis-Entwicklungen mache) auf Windows10 64 Bit installiert. Also die 64 Bit Lazarus/fpc Variante.
Nun möchte (muss) ich ein fertig getestetes Programm für Windows 32 Bit übersetzen.
Man kann ja das Ziel-Betriebssystem (und die Ziel-CPU-Familie und den Ziel-Prozessor) in den Projekt-Optionen einstellen, aber natürlich sind die FPC-Dateien dafür nicht da.
Fehlermeldung:
Compiler "C:\lazarus\fpc3.0.0\bin\x86_64_win64\fpc.exe" unterstützt nicht das Ziel i386-win32
Hat jemand einen gradlinig beschreibbaren funktionierenden Weg gefunden, das an's Laufen zu bringen ?
-Michael
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Cross-Compilieren
Lösung ohne Cross-Compiling: Installiere ein 32-Bit-Lazarus parallel.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Cross-Compilieren
Lazarus auf einen Windows32-Bit-Rechner installieren. (evtl. mit VirtualBox oder VMWare "innerhalb Linux")
Quelldatei dorthin kopieren.
Evtl. einige Compiler-Optionen in den Quellcode eingeben.
Compilieren.

Quelldatei dorthin kopieren.
Evtl. einige Compiler-Optionen in den Quellcode eingeben.
Compilieren.


"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Re: Cross-Compilieren
@m.fuchs: Aber "mschnell" möchte doch ein Windows-Programm?
..uuups, "mschnell" geht ja von Windows10 aus, sorry! (nachträglich ergänzt)
..uuups, "mschnell" geht ja von Windows10 aus, sorry! (nachträglich ergänzt)
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
-
- 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-Compilieren
Hast Du noch eine Windows Lizenz übrig ????Aliobaba hat geschrieben:](... evtl. mit VirtualBox oder VMWare "innerhalb Linux" .... )




M$ erlaubt ja nicht dieselbe Lizenz in einer Virtual Box auf demselben Rechner zu verwenden.
-Michael
-
- 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-Compilieren
Wird vermutlich gehen. Finde ich aber wenig elegant.m.fuchs hat geschrieben:Lösung ohne Cross-Compiling: Installiere ein 32-Bit-Lazarus parallel.
-Michael
Re: Cross-Compilieren
Das einfachste ist sicherlich, wie oben geschrieben, als Zweitinstallation die 32bit Version zu installieren.
Aber wenn du ein Crossinstall trotzdem probieren willst, noch eine Ergänzung: Soviel ich weiß, benötigt man zum kompilieren des FreePascal-Compilers selbst, die letzte stabile FPC-Version. Das ist für FPC 3.0.0 der Compiler 2.6.4. Für FPC-Trunk geht FPC 3.0.0.
Eine compile.bat für 32->64bit könnte so aussehen (ich nutze 32bit zum entwickeln, aufgrund des stabileren Debuggers):
Für 64->32bit sollte es so funktionieren (ungetestet):
Aber wenn du ein Crossinstall trotzdem probieren willst, noch eine Ergänzung: Soviel ich weiß, benötigt man zum kompilieren des FreePascal-Compilers selbst, die letzte stabile FPC-Version. Das ist für FPC 3.0.0 der Compiler 2.6.4. Für FPC-Trunk geht FPC 3.0.0.
Eine compile.bat für 32->64bit könnte so aussehen (ich nutze 32bit zum entwickeln, aufgrund des stabileren Debuggers):
Code: Alles auswählen
set TrunkPath=C:\FPCTrunk
set FPCTrunkPath=%TrunkPath%\fpc
set BootstrapCompilerPath=%TrunkPath%\binutils
set PATH=%BootstrapCompilerPath%;%PATH%
cd %FPCTrunkPath%
make clean
make all install INSTALL_PREFIX=%FPCTrunkPath% PP=%BootstrapCompilerPath%\ppc386.exe
make crossinstall CPU_TARGET=x86_64 OS_TARGET=win64 INSTALL_PREFIX=%FPCTrunkPath% PP=%BootstrapCompilerPath%\ppc386.exe
cd %FPCTrunkPath%\bin\i386-win32
fpcmkcfg -d basepath=%FPCTrunkPath% -o .\fpc.cfg
Code: Alles auswählen
make crossinstall CPU_TARGET=i386 OS_TARGET=win32 INSTALL_PREFIX=%FPCTrunkPath% PP=%BootstrapCompilerPath%\ppcx64.exe
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Cross-Compilieren
Wenn du parallel installierst brauchst du keine zusätzliche Lizenz.mschnell hat geschrieben:Hast Du noch eine Windows Lizenz übrig ????![]()
![]()
![]()
![]()
M$ erlaubt ja nicht dieselbe Lizenz in einer Virtual Box auf demselben Rechner zu verwenden.
Das tut mir leid. Aber was stört dich denn? Parallelinstallationen werden ja vom Windows-Installer explizit unterstützt. Warum sich dann die Mühe machen und den Cross-Compiler konfigurieren?mschnell hat geschrieben:Wird vermutlich gehen. Finde ich aber wenig elegant.m.fuchs hat geschrieben:Lösung ohne Cross-Compiling: Installiere ein 32-Bit-Lazarus parallel.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 56
- Registriert: So 24. Jan 2016, 18:31
- OS, Lazarus, FPC: Windows(10,8.1,7), Archlinux, Debian
- CPU-Target: 64Bit + 32Bit
- Wohnort: Winnenden
- Kontaktdaten:
Re: Cross-Compilieren
Man brauch aber Theoretisch keine Lizenz in einer VM, da man dort einfach den Testzeitraum von Windows nutzen kann und dann neu Installieren kann. Oder man bekommt halt keine Updates mehr, was beim Compelieren nicht schlimm ist.mschnell hat geschrieben:Hast Du noch eine Windows Lizenz übrig ????Aliobaba hat geschrieben:](... evtl. mit VirtualBox oder VMWare "innerhalb Linux" .... )![]()
![]()
![]()
![]()
M$ erlaubt ja nicht dieselbe Lizenz in einer Virtual Box auf demselben Rechner zu verwenden.
-Michael
Zum Thema kann ich nur sagen, lade doch mal die FPC WIN32 Dateien herunter und Kopiere sie in den entsprechenden Pfad. Das wäre meine Idee dazu. Getestet habe ich das ganze nicht, aber ich nutze ja auch nur die 32Bit Version von Lazarus.
LG
Rene Steiner
Wissen ist Macht und ich weis, das ich nichts weis
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Cross-Compilieren
ich glaube <nicht x86>-> 32-bit x86 funktioniert gar nicht weil der 32-bit cg 80b-it extended benutzt, was andere Architekturen nicht unterstützen.