Wie kann ich 64bit binaries erzeugen ???

Jan-Benedict Glaw jbglaw at lug-owl.de
Sat Dec 20 23:41:41 CET 2003


On Sat, 2003-12-20 18:45:43 +0100, Frederik Klama <fklama at Phreaker.net>
wrote in message <200312201845.43091.fklama at Phreaker.net>:
> Ich habe nun zwei Opteros, aber noch ein 32 bit Linux.

Was möchtest Du erreichen? 64bit Kernel? 64bit Userland?

Hast Du bedacht, daß 64bit Userland durchaus ein Rückschritt sein kann?

> Da ich keinen Bock habe mir eine 64bit Distributuin zu kaufen und sowieso den 
> Kram lieber selber mache, wollte ich alles selber neu kompilieren.

:-) Viel Spaß...

> Wenn ich aber "-march=atlon*" setze (jede im GCC Manual dokumentierte option) 

Fehlt da nicht noch mindestens ein "h"?

> oder "-m64" setze, meckert er immer schon im configure das gcc mir diesen 
> Optionen keine ausfuerbaren Dateien erstellen kann.

Was ist das für ein GCC?

Das, was Du da vorhast, ist im Wesentlichen, alle Binaries durch einen
Cross-Compiler zu jagen. Das ist durchaus kompliziert. Ist Dein GCC
überhaupt biarch-fähig zusammenkompiliert? Hast Du schon eine 64bit
glibc (-> wenn Du die denn eigentlich benutzen möchtest)?

> Folgendes Beispiel: versuch mit GCC-3.3.2 eine 64-bit bash-2.05b binary zu 
> erstellen:
> <begin>
> # export LDFLAGS="-m64" && export CPPFLAGS=$LDFLAGS
> # ./configure --prefix=/usr
> checking build system type... i686-pc-linux-gnu
> checking host system type... i686-pc-linux-gnu

Das ist schonmal falsch.

> Beginning configuration for bash-2.05b-release for i686-pc-linux-gnu
> 
> checking for gcc... gcc
> checking for C compiler default output... configure: error: C compiler cannot 
> create executables
> <end>

Es könnte sein, daß Dein Compiler versucht hat, ein 64bit-Programm zu
bauen, aber keine passende libc gefunden hat.

> Das gleiche Problem habe ich wenn ich "-march=atlon-xp" anstatt oder sogar mit 
> "-m64" zusammen setze.
> 
> Hat jemand damit erfarungen?

Was Du vorhast, ist _kompliziert_.

> Angeblich soll GCC-3.3.2 ja x86_64 binaries erstellen koennen, aber wie ???

Er muß entsprechend kompliert worden sein. Du brauchst zudem eine
entsprechende glibc. Außerdem brauchst Du weitere 64bit Libraries, um
die bash zu bauen (libncurses z.B.). Hast Du die schon alle?

> Ich habe schon im GCC - Manual nachgeguckt und nach diesem Thema gegoogled, 
> aber leider ohne Erfolg.
> Habe ich irgentetwas uebersehen ???

Vermutlich nicht. Zum GCC gibt's, was "komische" Konfigurationen angeht,
leider nicht allzuviel. Wenn Du Dir so einen GCC selbst zusammenbauen
willst, dann viel Spaß:-) Binutils sind "einfach", dann wird noch
mindestens 2maligen Bauen des GCC sowie mindestens einmaliges Bauen der
glibc zu bewältigen. Dazu kommt, daß Dein GCC eher ein Cross-Compiler
wird, als ein nativer Compiler. Dann stellt sich noch die Frage, ob
überhaupt schon Unterstützung für 64bittiges Userland vorhanden ist.
Geraten, aber ich wage das durchaus zu bezweifeln; das insbesondere, da
64bittiges Userland Dir nicht allzuviel bringt:

	- Durch das alignment von 64 (statt 32) Bit ist der
	  Speicherverbrauch eines Programmes (auf der Platte sowie im
	  RAM) deutlich größer (im vergleich zu einem 32bit-Programm).
	- Die Programme können durchaus _langsamer_ (als
	  32bit-Programme) sein, da durch den größeren RAM-Verbrauch
	  natürlich auch eine größere Speicher-Bandbreite zur CPU
	  gebraucht wird, um dieselben Ergebnisse zu erzeugen.
	- Von größeren Programmen paßt (prozentual) weniger in die
	  Caches. Dicke Einbuße bei Number-Crunching-Aktivitäten.

	- Vorteil: Bei wirklichen *Berechnungen* (also Number-Crunching)
	  kannst Du 64bit-Operationen benutzen. Ob der Compiler dieses
	  automatisch generiert, ist dann noch so eine Frage...
	- Vorteil: Deine Prozesse können > 2GB werden. Wie oft braucht
	  man das? Alle Programme, die das brauchen, haben Mechanismen,
	  um sich ggf. zu fork()en und die Speicherräume mehrerer
	  Prozesse quasi gemeinsam nutzen zu können.

> <begin "/proc/cpuinfo">
> # cat /proc/cpuinfo
> processor       : 0
> vendor_id       : AuthenticAMD
> cpu family      : 15
> model           : 5
> model name      : AMD Opteron(tm) Processor 242

Nette Kiste.

MfG, JBG

-- 
   Jan-Benedict Glaw       jbglaw at lug-owl.de    . +49-172-7608481
   "Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg
    fuer einen Freien Staat voll Freier Bürger" | im Internet! |   im Irak!
   ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20031220/e81e0dbb/attachment.sig>


More information about the Linux mailing list