[linux-l] Cross-Compiling für Win32 (was: Cygwin Lizenz)

Volker Grabsch vog at notjusthosting.com
Di Nov 11 18:39:29 CET 2008


Steffen Dettmer <steffen at dett.de> schrieb:
> * Volker Grabsch wrote on Thu, Nov 06, 2008 at 22:12 +0100:
> > Und gerade bei einer Crosscompiling-Umgebung finde ich es
> > wichtig, dass jede ihr eigenes Verzeichnis hat, und außerhalb
> > dieses Verzeichnisses nichts anrührt. Wenn man mehrere solcher
> > Umgebungen hat, kommt man sonst ganz schnell durcheinander.
> > Ganz zu schweigen von der Frage, was passiert, wenn beide
> > ihr SDL in /tmp/libsdl-1.2.3 bauen wollen ...
> 
> buildroot=`mktemp -d /tmp/$USER-build/$0.XXXXXX`?
> Bauen-zum-Installieren am besten mit rm -rf $buildroot anfangen.

Wiegesagt ist das nur eine Zeile im Script, die das festlegt.
Und bisher sah ich keinen Grund, von dem gängigen Schema
abzuweichen, dass temporäre Build-Dateien im entpackten
Source-Dir angelegt werden. Im Gegenteil, ich finde das sogar
recht praktisch.

> >Die Leute wollen
> > das gern in /usr/src/mingwcrossenv-X.Y bauen, aber nach
> > /opt/mingwcrossenv/ installieren.
> 
> Was installieren, das gebaute nach /opt? Klingt komisch... Aber
> einfach --prefix setzen oder?

Seit Version 2.0, die ich am Wochenende erarbeitet habe, wäre dies:

    make PREFIX=/opt/mingw

> > > >     http://landley.net/writing/docs/cross-compiling.html
> > >
> > > Verstehe den Zusammenhang nicht? Ich kompiliere viel für
> > > Embedded-Devices über Wine (autoconf/automake + WINE ist immer
> > > noch viel schneller als cygwin + autoconf/automake).
> > 
> > Ich meinte langsamere Ebedded-Devices, die zudem nicht unter
> > Windows laufen. ARM-Architekturen findet man z.B. oft.
> 
> Auf den devices läuft natürlich nichtmal ein Kompiler, Windows
> sowieso nicht, falls da überhaupt was läuft (also im Sinne von
> dynamisch ladbar), klar.
[...]
> /auf/ die embedded Platform gcc? Gut, theoretisch kriegt man das
> vermutlich hin, wenn man eine grosse Platform hat. Aber warum
> würde man das wollen? Der lahmste billigste PC ist doch immer
> noch zehnmal schneller (falls das reicht)?
[...]
> Na ja, embedded devices kann man ja für vieles nehmen, aber als
> compile farm server erscheinen mir die wenig geeignet...

Die Idee von Rob Landley ist, einen nativen Compiler zu bauen, aber
diesen nicht auf dem Device zu starten (klar, zu wenige Resourcen),
sondern auf dem PC, in einem Emulator (z.B. Qemu). Der hat nämlich
genug Resourcen.

Vorteil: Weniger Paket-Anpassungen
Nachteil: Immer noch langsamer Crosscompiling.

Den Nachteil kann man aber durch Einsatz von distcc wieder ausbügeln.
Gut, man muss erstmal ein Qemu+distcc aufsetzen und einrichten, aber
danach kann man quasi "nativ" compilieren, mit der Geschwindigkeit
eines Crosscompilers.

> Ja, und ich bau für ARM, wobei das eigentlich ziemlich egal ist,
> finde ich. Man ruft halt einen gcc auf und linkt dann irgendwas
> zusammen.

Wenn das Crosscompiling doch nur *tatsächlich* so einfach wäre. :-)


Gruß,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l