Crosscompiling von win64 auf win32
-
- Beiträge: 15
- Registriert: Do 9. Sep 2010, 19:44
- OS, Lazarus, FPC: Ubuntu 11.04 (L0.9.30, FPC 2.4.2)
- CPU-Target: 32/64
Crosscompiling von win64 auf win32
Hallo,
nachdem ich mich jetzt eine Weile auf eigene Faust durchgesucht habe und mir nicht selbst helfen konnte, frage ich hier um Rat. Es geht um folgendes: Ich habe auf meinem Rechner (Win 7 64bit) ein Programm geschrieben, das jetzt auf einem Win XP 32bit ebenso laufen soll. Einfach rüberkopieren und starten geht leider nicht - ungültige Win32-Executable. Daher muss wohl ein Crosscompiler her, da leider der 32bit-Rechner nicht austauschbar ist und ich auf dem auch keine FP/Lazarus-IDE installieren kann.
Die Compiler-Optionen bei Lazarus waren schnell gefunden, aber als ich das Zielsystem gesetzt hatte - 32bit-CPU - wurden auf einmal die Dateien system.ppu, sysutils.ppu, classes.ppu, avl_tree.ppu und zstream.ppu nicht mehr gefunden. Kompiliere ich es ohne diese Einstellung, geht alles ganz normal.
Wo genau erwartet denn der 32bit-FP-Compiler diese Dateien? Muss ich mir die selbst bauen? Namentlich klingt es ja nicht so, als käme mein Projekt ohne diese Dateien aus.
Herzlichen Dank für jede Hilfe.
mit freundlichen Grüßen,
TheLinuxist
nachdem ich mich jetzt eine Weile auf eigene Faust durchgesucht habe und mir nicht selbst helfen konnte, frage ich hier um Rat. Es geht um folgendes: Ich habe auf meinem Rechner (Win 7 64bit) ein Programm geschrieben, das jetzt auf einem Win XP 32bit ebenso laufen soll. Einfach rüberkopieren und starten geht leider nicht - ungültige Win32-Executable. Daher muss wohl ein Crosscompiler her, da leider der 32bit-Rechner nicht austauschbar ist und ich auf dem auch keine FP/Lazarus-IDE installieren kann.
Die Compiler-Optionen bei Lazarus waren schnell gefunden, aber als ich das Zielsystem gesetzt hatte - 32bit-CPU - wurden auf einmal die Dateien system.ppu, sysutils.ppu, classes.ppu, avl_tree.ppu und zstream.ppu nicht mehr gefunden. Kompiliere ich es ohne diese Einstellung, geht alles ganz normal.
Wo genau erwartet denn der 32bit-FP-Compiler diese Dateien? Muss ich mir die selbst bauen? Namentlich klingt es ja nicht so, als käme mein Projekt ohne diese Dateien aus.
Herzlichen Dank für jede Hilfe.
mit freundlichen Grüßen,
TheLinuxist
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Crosscompiling von win64 auf win32
also ich mach das immer folgenermaßen.
Vorab: Es geht warscheinlich sauberer und besser, die methode ist aber einfach
1. Installiere Lazarus für Win32.
2. Installiere Lazarus für Win64 in den gleichen ordner.
--> Lazarus64 überschreibt die 32 variante, aber so hat man auch automatisch den FPC für 64 und 32 weil dieser nicht überschrieben wird... (wie gesagt geht bestimmt auch als extra download...)
3. Werkzeuge --> Einstellungen --> Umgebung (ganz oben) --> Dateien (ganz oben) -->
bei Compiler Dateipfad und Pfad zum Make programm:
steht
bzw
4. eventuell muss man noch unter Projekteinstellungen --> Codegenerierung Zielbetriebssystem umd Zielplatform anpassen...
Vorab: Es geht warscheinlich sauberer und besser, die methode ist aber einfach

1. Installiere Lazarus für Win32.
2. Installiere Lazarus für Win64 in den gleichen ordner.
--> Lazarus64 überschreibt die 32 variante, aber so hat man auch automatisch den FPC für 64 und 32 weil dieser nicht überschrieben wird... (wie gesagt geht bestimmt auch als extra download...)
3. Werkzeuge --> Einstellungen --> Umgebung (ganz oben) --> Dateien (ganz oben) -->
bei Compiler Dateipfad und Pfad zum Make programm:
steht
Code: Alles auswählen
\bin\x86_64-win64\fpc.exe
Code: Alles auswählen
\bin\i386-win32\fpc.exe
Code: Alles auswählen
Signatur := nil;
-
- Lazarusforum e. V.
- Beiträge: 3178
- 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: Crosscompiling von win64 auf win32
Es reicht, wenn du dir den FPC (möglichst in der gleichen Version) auch für nur win32 installierst. Der Free Pascal Compiler für win64 kann — soweit ich weiß — zwar auch schon so für win32 compilieren, aber die ganzen Standard-Units werden nur im Quelltext mitgeliefert.MAC hat geschrieben:1. Installiere Lazarus für Win32.
2. Installiere Lazarus für Win64 in den gleichen ordner.
Die Units, die von Lazarus kommen sollten bei einer ausreichend aktuellen Lazarus-Version automatisch für win32 übersetzt werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 15
- Registriert: Do 9. Sep 2010, 19:44
- OS, Lazarus, FPC: Ubuntu 11.04 (L0.9.30, FPC 2.4.2)
- CPU-Target: 32/64
Re: Crosscompiling von win64 auf win32
Danke euch recht herzlich, da habt ihr wohl mein Wochenende gerettet 
Gibt's da evtl. eine Möglichkeit, automagisch Builds für 32 und 64 zu erzeugen, sobald ich das Projekt baue? Sonst muss ich immer umstellen, wenn ich Updates baue...

Gibt's da evtl. eine Möglichkeit, automagisch Builds für 32 und 64 zu erzeugen, sobald ich das Projekt baue? Sonst muss ich immer umstellen, wenn ich Updates baue...
Ich kann mir keine Signatur leisten 

-
- Lazarusforum e. V.
- Beiträge: 3178
- 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: Crosscompiling von win64 auf win32
Möglicherweise geht das mit den neuen Complier-Einstellungen in Lazarus seit Version 0.9.30, aber mit denen kenn ich mich (noch) nicht aus.TheLinuxist hat geschrieben:Danke euch recht herzlich, da habt ihr wohl mein Wochenende gerettet
Gibt's da evtl. eine Möglichkeit, automagisch Builds für 32 und 64 zu erzeugen, sobald ich das Projekt baue? Sonst muss ich immer umstellen, wenn ich Updates baue...
Edit: Ansonsten hilft ein kleines Batch-Skript, das das mitgelieferte Lazarus-Tool lazbuild aufruft. Lazbuild übersetzt ein ganzes Lazarus-Projekt, so wie es die IDE tun würde, aber eben auf der Komandozeile; per Parameter kann man auch das Zielbetriebssystem bestimmen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Crosscompiling von win64 auf win32
Und wenn es so ein Programm nicht gibt ...
Programmieren wir halt eins
ich schau mir das mal an vieleicht lässt sich da was einfach erstellen..
Programmieren wir halt eins

ich schau mir das mal an vieleicht lässt sich da was einfach erstellen..
Code: Alles auswählen
Signatur := nil;
-
- Beiträge: 15
- Registriert: Do 9. Sep 2010, 19:44
- OS, Lazarus, FPC: Ubuntu 11.04 (L0.9.30, FPC 2.4.2)
- CPU-Target: 32/64
Re: Crosscompiling von win64 auf win32
Na ja, jedenfalls danke euch allen. Das Programm ist fertig und portiert. Wäre toll, wenn da noch mehr automatisch gehen würde, aber so tut es schon: Ein 64bit-Build zum testen (das geht ja schnell, da muss ich nix ändern) und wenn eine Version wirklich fertig ist, mach ich den 32bit. Hätte nicht gedacht, dass das doch so einfach ist.
Ich kann mir keine Signatur leisten 

-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Crosscompiling von win64 auf win32
__________________________
Ich muss dieses Tema noch einmal anschneiden... Ich möchte in Zukunft wichtige Projekte auch für 32- und 64bit anbieten. Ich habe also die neuste Version von Lazarus (1.04) für 32 und 64 bit heruntergeladen und (32 zuerst) in den gleichen Ordner installiert. Aber alle Programme, die ich für 32bit kompiliere stürzen sofort ab, bevor der Debugger starten kann. Es kommt dieser Windows-Dialog "Projekt1.exe funktioniert nicht mehr".
Ist es nicht richtig, für 32bit unter Projekt --> Projekteinstellungen --> Codegenerierung das Zielbetriebssystem auf Win32 und Ziel-CPU auf i386 zu stellen?
Ich habe auch schon mit dem Kompilerpfad experimentiert - ich schaffe es einfach nicht.
Ich muss dieses Tema noch einmal anschneiden... Ich möchte in Zukunft wichtige Projekte auch für 32- und 64bit anbieten. Ich habe also die neuste Version von Lazarus (1.04) für 32 und 64 bit heruntergeladen und (32 zuerst) in den gleichen Ordner installiert. Aber alle Programme, die ich für 32bit kompiliere stürzen sofort ab, bevor der Debugger starten kann. Es kommt dieser Windows-Dialog "Projekt1.exe funktioniert nicht mehr".
Ist es nicht richtig, für 32bit unter Projekt --> Projekteinstellungen --> Codegenerierung das Zielbetriebssystem auf Win32 und Ziel-CPU auf i386 zu stellen?
Ich habe auch schon mit dem Kompilerpfad experimentiert - ich schaffe es einfach nicht.
-
- Beiträge: 104
- Registriert: Fr 22. Jun 2012, 01:51
- OS, Lazarus, FPC: Fedora-Linux 23 (Korora) Lazarus 1.6 FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Bonn
Re: Crosscompiling von win64 auf win32
als alternative habe ich codetyphon installiert, da kann man mehrere lazaren gleichzeitig installieren.
man kann dann einfach fpc mehrmals für die anderen platformen kompilieren.
Ich hab aber noch nicht so viel damit rumprobiert aber es hat damit funktioniert.
man kann dann einfach fpc mehrmals für die anderen platformen kompilieren.
Ich hab aber noch nicht so viel damit rumprobiert aber es hat damit funktioniert.
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Crosscompiling von win64 auf win32
Hm, das Setup davon braucht ja ewig...
So, fertig. Ich erhalte aber immer folgende Fehlermeldungen:
Kommt mir irgendwie bekannt vor, aber hier bekomme ich es nicht gelöst...
x64-Programme kann ich kompilieren, aber da meckert der Debugger "Not in executable format". Also irgendwas mache ich falsch...
So, fertig. Ich erhalte aber immer folgende Fehlermeldungen:
Code: Alles auswählen
PPU Loading C:\codetyphon\lazarus\lcl\units\i386-win32\win32\interfaces.ppu
PPU Invalid Version 134
project1.lpr(9,3) Fatal: Can not find Interfaces used by Project1, ppu=..\lazarus\lcl\units\i386-win32\win32\interfaces.ppu, package LCL
x64-Programme kann ich kompilieren, aber da meckert der Debugger "Not in executable format". Also irgendwas mache ich falsch...
Zuletzt geändert von MitjaStachowiak am Do 13. Dez 2012, 11:13, insgesamt 1-mal geändert.
-
- Beiträge: 104
- Registriert: Fr 22. Jun 2012, 01:51
- OS, Lazarus, FPC: Fedora-Linux 23 (Korora) Lazarus 1.6 FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Bonn
Re: Crosscompiling von win64 auf win32
und das kompilieren erst ... 

-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Crosscompiling von win64 auf win32
Ja... Muss man, nachdem man die setup.bat ausgeführt und Remove and Build ALL ausgewählt hat (und gewartet hat
) noch irgendwas machen?
Ich habe unter Projekteinstellungen wieder Win32 und i386 bzw. Win64 und x86_64 eingestellt - das erste (32) geht nicht (Fehlermeldung siehe oben), das zweite (64) lässt sich nicht debuggen...

Ich habe unter Projekteinstellungen wieder Win32 und i386 bzw. Win64 und x86_64 eingestellt - das erste (32) geht nicht (Fehlermeldung siehe oben), das zweite (64) lässt sich nicht debuggen...
-
- Beiträge: 104
- Registriert: Fr 22. Jun 2012, 01:51
- OS, Lazarus, FPC: Fedora-Linux 23 (Korora) Lazarus 1.6 FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Bonn
Re: Crosscompiling von win64 auf win32
wo jetzt? also so habe ich das bisher immer gemacht.
1. 1x fpc für win32 und 1x fpc für win64 kompilieren
2. 1x lazarus für win32 und 1x für win64 kompilieren
Das Ganze über die Benutzeroberfläche von CodeTyphon
Da gibts noch die Unterscheidung BigIDE und SmallIDE, bei der BigIDE sind alle Packages mit drin und small ist sehr minimalistisch, glaub sogar ohne synedit. Das kann man aber auch anpassen.
1. 1x fpc für win32 und 1x fpc für win64 kompilieren
2. 1x lazarus für win32 und 1x für win64 kompilieren
Das Ganze über die Benutzeroberfläche von CodeTyphon
Da gibts noch die Unterscheidung BigIDE und SmallIDE, bei der BigIDE sind alle Packages mit drin und small ist sehr minimalistisch, glaub sogar ohne synedit. Das kann man aber auch anpassen.
-
- Beiträge: 104
- Registriert: Fr 22. Jun 2012, 01:51
- OS, Lazarus, FPC: Fedora-Linux 23 (Korora) Lazarus 1.6 FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Bonn
Re: Crosscompiling von win64 auf win32
achso und ich starte dann immer die ide für die ich kompilieren will,
da gibts bestimmt bessere lösungen aber es funktioniert und insofern ist mir das egal.
Wass fürn remove? Weiß das leider jetzt auch nicht mehr auswendig, habe das nur auf der Arbeit und bei meiner freundin auf dem Computer installiert
Ich glaube ich habe nur Install bei dem ersten batch gemacht und dann hat der noch die setup.bat ausgeführt und da musste man auch irgendwas mit install machen, und dann habe ich codetyphon gestartet..
da gibts bestimmt bessere lösungen aber es funktioniert und insofern ist mir das egal.
Wass fürn remove? Weiß das leider jetzt auch nicht mehr auswendig, habe das nur auf der Arbeit und bei meiner freundin auf dem Computer installiert

Ich glaube ich habe nur Install bei dem ersten batch gemacht und dann hat der noch die setup.bat ausgeführt und da musste man auch irgendwas mit install machen, und dann habe ich codetyphon gestartet..
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Crosscompiling von win64 auf win32
Ok, läuft.
Ich habe bei mir erstmal alles runtergeschmissen (Lazarus deinstalliert, Einstellungen gelöscht, aus PATH genommen, CodeTyphon gelöscht).
Dann CodeTyphon wieder draufkopiert und in der start.bat das erste (CodeTyphon starten) ausgewählt. In CodeTyphon dann FPC 32, Laz 32 BIG, FPC 64 und Laz 64 BIG kompiliert und dann ging's.
Vielen Dank für den Tipp
Ich habe bei mir erstmal alles runtergeschmissen (Lazarus deinstalliert, Einstellungen gelöscht, aus PATH genommen, CodeTyphon gelöscht).
Dann CodeTyphon wieder draufkopiert und in der start.bat das erste (CodeTyphon starten) ausgewählt. In CodeTyphon dann FPC 32, Laz 32 BIG, FPC 64 und Laz 64 BIG kompiliert und dann ging's.
Vielen Dank für den Tipp
