UniversalBinaries mit Lazarus?

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

UniversalBinaries mit Lazarus?

Beitrag von Targion »

Hallo!
Kann ich auf einem Intel-Mac mit Lazarus Universal-Binaries erstellen, OHNE gleich ein für PPC compiliertes Lazarus mitsamt Compiler zu installieren, das Projekt dort auchnoch neu zu erstellen und die beiden Binärdateien mit lipo zusammenzufügen?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du brauchst kein für ppc kompiliertes Lazarus sondern nur den power pc crosscompiler. Den musst du dir aber warscheinlich aus den Sourcen selbst übersetzen. Beides einzeln compilieren und dann mit lipo zusammenfügen. Der fpc kann von sich aus derzeit keine universal Binarys generieren.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Sind Universalbinärdateien überhaupt möglich? Also Dateien, die auf jedem System laufen? Wäre ja ziemlich kurios.

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

UniversalBinary heißen AFAIK die ausführbaren Dateien eines Macs. In dem Fall bedeutet es, dass ein und dieselbe UB auf PPC und iX86 laufen kann.
Das Betriebssystem erkennt das offenbar am Header in der Datei. Hab es selber erst gerade auf Wikipedia nachlsen müssen.
Schon toll, was geht. Aber sind die dann nicht langsamer, oder so? Ne Jar-File läuft auch überall, wo es eine JVM gibt. Aber der Speed.....

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Ok, danke für die Antwort.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

@bemulak Universal Binarys sind nur 2 binarys in einem Sonderdateiformat verpackt. bevor das binary gestartet wird wird das entsprechende für deise Maschine (i386 oder PPC) aus dem universal Binary extrahiert und dann gestartet ist also genausoschnell.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Oh, wieder was dazugelernt. Danke für die Info.

Vincent
Beiträge: 17
Registriert: Do 20. Sep 2007, 14:05

Beitrag von Vincent »

I don't have a Mac, but I think you can create universal binaries as follows (A IntelMac host is required).

Install the IntelMac version of lazarus and fpc.

Compile the application for the IntelMac, keep the executable on a safe place.
Change the TargetCPU to powerpc (and make sure the compiler is set to fpc and not ppc386 in the environment options).
Compile the application for the PowerMac.

Combine the two binaries with the command line tool lipo into one universal binary.

ovidius
Beiträge: 86
Registriert: Mo 11. Sep 2006, 12:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bremen

Beitrag von ovidius »

Man kann auch die PowerPC Variante von Lazarus auf einem Intel Mac zum Laufen bringen, braucht dazu aber eine powerpc Version der GTK-Bibliotheken. Zumindest war das beim letzten Mal so, als ich das probiert habe. Damals war die Carbon-LCL noch nicht so weit.

Noch eine kleine Anmerkung zum Thema Universal Binaries: Es gibt nicht nur i386 und PowerPC, sondern diese beiden auch nochmal in einer 64 Bit Version. Ein Universal Binary kann also bis zu vier verschiedene Komponenten haben.

Liest man die Doku zum neuen Mac OS X Leopard, dann hat man eher den Eindruck das in Zukunft eher Universal Binaries in der Form i366 32/64 Bit an Bedeutung gewinnen werden.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

dann solltet ihr c-shap nutzen, wenn ich das richtig Verstanden habe laufen die auch auf vielen bs.... und werden beim jeden starten(?) neu kompliert...

Sowas währe doch auch für Lazarus Denkbar oder nicht ?
im Prinzip sollte doch folgendes gehen:
Du gibt den FPC Komplier weiter und fertig.... jetzt ein kleines Script eine Start Datei die das dann auto. Kompliert... Probleme gibt es nur wenn es ein LIB nicht gibt... ich hatte mal vor bzw. habe es immer noch wo genau das für ein einfaches Spiel zu machen... und zwar mit DLLS die halt einfach erstellt werden können und dank den FPC Kompliert werden könnten....

So muss keine Script Sprache gepast werden was ja immer länger Dauert...

Ich hoffe ihr Versteht das wie ich mir das Vorstelle...
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Toller Erfindung ... ich schlage vor wir nennen das dann Open Source, na was haltet ihr davon.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja das sind die Vorteile von OpenSoruce das man sowas machen kann....(könnte wenn man wollte)
MFG
Michael Springwald

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Danke für die Hilfe.
Ich habe den Tipp von Vincent ausprobiert, jedoch sagt mir der Compiler (bzw. die IDE) dass "fpc" kein Compiler und keine ausführbare Datei ist.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du musst auch den fpc bin pfad in deiner pfad Umgebungsvariable eintragen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Beitrag von Targion »

Super, so funktioniert's. Was ist mit "TargetCPU" gemeint, wo finde ich die Einstellung für mein Projekt? Oder muss ich Lazarus mit TargetCPU "powerpc" neu erstellen?

Antworten