Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: Wie 64bit ist 64bit?

  1. #1
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558

    Wie 64bit ist 64bit?

    Servus!

    These: auf einem 64bit-System ist der Datentyp long 8 Byte groß.

    Testaufbau: C-Programm, das die Größe von long ausgibt auf verschiedenen Plattformen mit gcc kompilieren und ausführen

    Testergebnisse:

    Linux/i686: 4 Byte - OK
    Linux/x86_64: 8 Byte - OK
    NetBSD/sparc64: 8 Byte - OK
    Linux/sparc64: 4 Byte - ???
    Solaris/sparc64: 4 Byte - ???

    Kann mir einer erklären warum weder Solaris noch Linux auf sparc64 einen 64bittigen userspace hat? Oder ist meine These schon falsch?
    ¡Nuestro amigo... el Computador!

  2. #2
    Shot a man in Reno Avatar von HEMIcuda
    Registriert seit
    Jun 2003
    Ort
    Am Rande des Wahnsinns
    Beiträge
    5.481
    Nein, Deine These ist nicht falsch. AFAIK sind bei Solaris und Linux auf Sparc64 nur der Kernel 64bittig, der Userspace ist weiterhin 32bittig (wohl auch einer der Gruende, warum Star-/OpenOffice so lange nicht 64bit-fest war: Keine Notwendigkeit, da eh nur 32bit verwendet wurden).

  3. #3
    - - - - - - - - - - Avatar von zander
    Registriert seit
    Mar 2001
    Beiträge
    6.144
    Bei Windows XP 64-bit (em64t/amd64) ist ein unsigned long tatsächlich nur 32-bit breit. Zu Solaris/sparc64 kann ich nichts sagen, bei Solaris/x64 ist aber durchaus nicht nur der kernel 64-bittig. Hast du Dein Testprogramm mit `gcc -m64 ...` übersetzt?

  4. #4
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    Gute Idee, zander.
    Bei Solaris/sparc64 hat's den gewünschten Effekt gebracht, dort ist long nun auch 8byte groß.
    Aber unter linux/sparc64 bekomme ich diesen Fehler:
    Code:
    $ gcc -m64 -o sizeof sizeof.c
    cc1: error: -m64 is not supported by this configuration
    cc1: error: -mlong-double-64 not allowed with -m64
    ¡Nuestro amigo... el Computador!

  5. #5
    - - - - - - - - - - Avatar von zander
    Registriert seit
    Mar 2001
    Beiträge
    6.144
    Möglicherweise handelt es sich bei dem compiler um eine reine 32-bit-Version; was sagt denn `file sizeof` auf Linux/sparc64 über die Art der Binärdatei aus, 32-bit oder 64-bit ELF?

  6. #6
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    file sagt das hier:
    sizeof: ELF 32-bit MSB executable, SPARC32PLUS, V8+ Required, version 1 (SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), for GNU/Linux 2.4.1, not stripped
    ¡Nuestro amigo... el Computador!

  7. #7
    - - - - - - - - - - Avatar von zander
    Registriert seit
    Mar 2001
    Beiträge
    6.144
    In dem Fall ist klar, warum es 4 zurückgibt; möglicherweise ist auf dem System getrennt ein 64-bit compiler installiert.

  8. #8
    Registrierter Benutzer
    Registriert seit
    Jan 2003
    Beiträge
    2.325
    Code:
    #include <stdio.h>
    
    int main(){
            printf("%i", sizeof(int));
            return 0;
    }
    Code:
    fab@moloch-03:~$ cc -m64 bla.c
    fab@moloch-03:~$ ./a.out
    4
    fab@moloch-03:~$ uname -a
    Linux moloch-03 2.6.11.6 #6 Sun Oct 23 02:40:14 CEST 2005 sparc64 GNU/Linux
    fab@moloch-03:~$ file a.out
    a.out: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), for GNU/Linux 2.4.18, dynamically linked (uses shared libs), not stripped
    @Thorsten: Hast du die 64Bit-Version der libc zusätzlich installiert? Unter Debian und Gentoo sind das zusätzliche Pakete, die zu installieren sind. Wie hemicuda schon sagte, ist das Userland unter Linux Sparc32 (bzw. Sparc), nur der Kernel ist wirklich Sparc64. Ob es auch so unter Solaris aussieht weiß ich nicht. Ab Solaris 10 könnte ich es mir jedenfalls vorstellen, da mit Solaris 10 keine normalen Sparcs mehr unterstützt werden, sondern nur noch UltraSparcs (also 64-bittig, sprich SPARCv9).

    Unter Debian sind verschiedene Pakete vorhanden. libc6-sparc64, libc6-dev-sparc64 (Die hatte ich gerade vergessen. Ohne die wirds natürlich nichts mit dem Kompilieren. ), libc-sparcv9 und für ganz moderne US-CPUs auch noch libc6-sparcv9b.
    Geändert von sirmoloch (10.01.06 um 13:01 Uhr)

  9. #9
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    Zumindest gibt es ein /usr/bin/gcc64. Wenn ich die Datei aber damit kompilieren will, bekomme ich diesen Fehler:
    Code:
    $ gcc64 -o sizeof sizeof.c
    sizeof.c:1:19: stdio.h: No such file or directory
    Die stdio.h ist natürlich da - und zwar in /usr/include, wo sie der "normale" gcc ja auch findet. gcc32 gibt's übrigens auch und der funktioniert genauso gut wie der "normale" gcc - die beiden Dateien sind aber nicht miteinander verlinkt.

    Na jedenfalls hab' ich mir eben noch gedacht, na gut, wenn der gcc64 zu doof ist die stdio.h zu finden, sagste ihm halt wo sie ist. Aber dann bekomme ich diesen Fehler:
    $ gcc64 -I /usr/include/ -o sizeof sizeof.c
    /usr/lib/gcc/sparc64-unknown-linux-gnu/3.4.5/../../../../sparc64-unknown-linux-gnu/bin/ld: crt1.o: No such file: No such file or directory
    collect2: ld returned 1 exit status
    Da sieht die Pfadangabe ziemlich merkwürdig aus. Aber die Datei /usr/lib/crt1.o existiert jedenfalls. Hmmm...scheint was mit dem Linker zu sein. Naja, ich bin sowieso gerade dabei das komplette System auf gcc-3.4.5 umzustellen (von gcc-3.3.6) und werd's danach nochmal versuchen.

    Danke schonmal für Eure Hilfe - und falls Euch noch etwas einfallen sollte: immer her damit!
    ¡Nuestro amigo... el Computador!

  10. #10
    Registrierter Benutzer
    Registriert seit
    Jan 2003
    Beiträge
    2.325
    Du musst die Libs separat installieren. Gibt es bei dir schon ein /lib64? Ich vermute mal nein...

    Falls es dir hilft, schau mal in den Anhang. Die Ausgabe von gcc -m64 -v bla.c ist dort drin (das Programm, das ich eben auch zum Testen benutzt habe).
    Geändert von sirmoloch (29.08.09 um 17:53 Uhr)

  11. #11
    - - - - - - - - - - Avatar von zander
    Registriert seit
    Mar 2001
    Beiträge
    6.144
    @sirmoloch: das ist schon richtig, ein int ist üblicherweise 4 Byte breit.

  12. #12
    Registrierter Benutzer
    Registriert seit
    Jan 2003
    Beiträge
    2.325
    Zitat Zitat von zander
    @sirmoloch: das ist schon richtig, ein int ist üblicherweise 4 Byte breit.
    Ja, ich weiß. Ich wollte auch nicht das Gegenteil behaupten.

  13. #13
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    Nee, ein /lib64 gibt's in der Tat nicht. Ganz im Gegenteil, es gibt ein /usr/lib32. Aber wieso? Und wo kommt das her? Also bei Gentoo scheint's kein Paket zu geben, das sparc und 64 im Namen hat außer gcc-sparc64, welches aber bereits installiert ist (nämlich um den Kernel zu kompilieren).

    Kann's vielleicht sein, dass ich meine /etc/make.conf anpassen muss? Dort steht an den entscheidenden Stellen bisher nur das da:
    CFLAGS="-O2 -mcpu=ultrasparc"
    CXXFLAGS="-O2 -mcpu=ultrasparc"
    ...dafür steht das gleich 2x drin: 1x von mir gesetzt und 1x von einem catalyst build script automatisch dort eingetragen.

    Ach ja, ich hab' noch ein Paket mit dem Namen sparc32 bei mir installiert. Das scheint mir so als könnte es ein 32bit-Environment auf einer 64bit-Maschine setzen zu können, aber ich hab' das manuell nie ausgeführt, wenn dann wird das automatisch gesetzt...und ich kann es nicht deinstallieren....naja, ich kann schon, aber wenn ich das tun will, bekomm ich ne dicke, fette Warnmeldung, dass sparc32 zu den Systempaketen gehört und ich es doch lieber nicht löschen sollte.
    ¡Nuestro amigo... el Computador!

  14. #14
    Registrierter Benutzer
    Registriert seit
    Jan 2003
    Beiträge
    2.325
    Den genauen Namen kenne ich nicht mehr. Es kann auch sein, dass es nur ein Useflag bei der libc war. Meine Experimente mit Gentoo auf meiner U5 sind schon zu lang her.

    Jedenfalls wirst du auch nicht unbedingt viel Freude damit bekommen Programme speziell für Sparc64 zu bauen. Viele Pakete mögen das leider nicht. Nachdem ich dann auch selbst versucht hatte das System komplett zu einem reinen Sparc64-Linux zu machen (komplett von Hand), wusste ich, wieso es das 32 Bit-Userland für Linux/Sparc64 gibt.

    Versucht habe ich das vor einem oder anderthalb Jahren. Ob sich mittlerweile etwas geändert hat weiß ich nicht, aber ich würde mir auch nicht wieder Linux auf meine U5 installieren. Alleine schon der Performance wegen...

  15. #15
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    Eijo, IO-Performance ist schon unter aller Sau, das stimmt. Aber als Desktop-Rechner mit KDE macht's mehr spaß als WinXP auf nem P4.

    edit: Ich hab' mal im Gentoo-Forum nen Thread eröffnet, in dem ich frage, warum der userspace nur 32bittig ist.
    Geändert von ThorstenHirsch (10.01.06 um 14:03 Uhr)
    ¡Nuestro amigo... el Computador!

Ähnliche Themen

  1. ClanMod und 64bit
    Von NextDoorNikki im Forum Dedizierte Spiele Server
    Antworten: 2
    Letzter Beitrag: 31.01.06, 00:15
  2. welche distri für 64bit winex/half-life2
    Von jenskutschera im Forum Emulatoren für Spiele
    Antworten: 11
    Letzter Beitrag: 17.04.05, 10:54
  3. UT2004 unter Suse9.2 64bit
    Von BrudA im Forum Spielen Allgemein
    Antworten: 1
    Letzter Beitrag: 23.03.05, 18:35
  4. CEDEGA & 64Bit System
    Von der_angler im Forum Emulatoren für Spiele
    Antworten: 3
    Letzter Beitrag: 25.02.05, 13:18
  5. Warum sind 64Bit schneller als 32?
    Von Doh! im Forum stationäre Hardware
    Antworten: 13
    Letzter Beitrag: 11.01.04, 15:45

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •