Cross-Compilieren

Für Dinge zum Forum, Kritik, Verbesserungsvorschläge, Umfragen und ähnliches.

Cross-Compilieren

Beitragvon mschnell » 29. Sep 2016, 10:56 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
mschnell
 
Beiträge: 3226
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon m.fuchs » 29. Sep 2016, 12:48 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
m.fuchs
 
Beiträge: 1970
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Aliobaba » 29. Sep 2016, 12:50 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.
8) :cry:
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Aliobaba
 
Beiträge: 342
Registriert: 1. Mai 2012, 08:11

Beitragvon Aliobaba » 29. Sep 2016, 12:52 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)
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Aliobaba
 
Beiträge: 342
Registriert: 1. Mai 2012, 08:11

Beitragvon mschnell » 29. Sep 2016, 13:38 Re: Cross-Compilieren

Aliobaba hat geschrieben:](... evtl. mit VirtualBox oder VMWare "innerhalb Linux" .... )


Hast Du noch eine Windows Lizenz übrig ???? :D :( :( :D

M$ erlaubt ja nicht dieselbe Lizenz in einer Virtual Box auf demselben Rechner zu verwenden.

-Michael
mschnell
 
Beiträge: 3226
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon mschnell » 29. Sep 2016, 13:39 Re: Cross-Compilieren

m.fuchs hat geschrieben:Lösung ohne Cross-Compiling: Installiere ein 32-Bit-Lazarus parallel.


Wird vermutlich gehen. Finde ich aber wenig elegant.

-Michael
mschnell
 
Beiträge: 3226
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon Michl » 29. Sep 2016, 13:41 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):
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

Für 64->32bit sollte es so funktionieren (ungetestet):
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; 
Michl
 
Beiträge: 2260
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon m.fuchs » 29. Sep 2016, 13:43 Re: Cross-Compilieren

mschnell hat geschrieben:Hast Du noch eine Windows Lizenz übrig ???? :D :( :( :D
M$ erlaubt ja nicht dieselbe Lizenz in einer Virtual Box auf demselben Rechner zu verwenden.

Wenn du parallel installierst brauchst du keine zusätzliche Lizenz.

mschnell hat geschrieben:
m.fuchs hat geschrieben:Lösung ohne Cross-Compiling: Installiere ein 32-Bit-Lazarus parallel.

Wird vermutlich gehen. Finde ich aber wenig elegant.

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?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1970
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon deadc0de » 29. Sep 2016, 13:44 Re: Cross-Compilieren

mschnell hat geschrieben:
Aliobaba hat geschrieben:](... evtl. mit VirtualBox oder VMWare "innerhalb Linux" .... )


Hast Du noch eine Windows Lizenz übrig ???? :D :( :( :D

M$ erlaubt ja nicht dieselbe Lizenz in einer Virtual Box auf demselben Rechner zu verwenden.

-Michael


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.

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
deadc0de
 
Beiträge: 56
Registriert: 24. Jan 2016, 18:31
Wohnort: Winnenden
OS, Lazarus, FPC: Windows(10,8.1,7), Archlinux, Debian | 
CPU-Target: 64Bit + 32Bit
Nach oben

Beitragvon marcov » 29. Sep 2016, 18:19 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.
marcov
 
Beiträge: 1032
Registriert: 5. Aug 2008, 08:37
Wohnort: Eindhoven (Niederlande)
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk) | 
CPU-Target: 32/64,PPC(+64), ARM
Nach oben

• Themenende •

Zurück zu Allgemeines



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried