Semua prosesor yang mendukung set instruksi x64 (juga dikenal sebagai x86_64 atau amd64) juga mendukung set instruksi x86 (juga dikenal sebagai i386 atau i686, yang merupakan versi spesifik dari x86). Hal yang sama berlaku untuk ARM A64 (set instruksi 64-bit baru muncul di ARMv8) dan A32 (nama untuk set instruksi 32-bit "klasik"), untuk SPARC64 dan SPARC , dan saya percaya untuk MIPS64 dan MIPS . Jadi pada semua keluarga arsitektur ini, jika sebuah prosesor dapat menjalankan kode 64-bit, ia juga dapat menjalankan kode 32-bit.
Kernel Linux mendukung menjalankan kode userland 32-bit dengan kernel 64-bit (pada semua keluarga arsitektur yang disebutkan di atas, saya kira). Kernel harus homogen (semua 64-bit atau 32-bit), dan setiap proses harus homogen, tetapi Anda dapat memiliki campuran proses 32-bit dan 64-bit pada kernel 64-bit. Kebalikannya tidak mungkin: dengan kernel 32-bit, Anda tidak dapat menjalankan proses 64-bit.
Ini adalah pilihan desain di Linux, dimotivasi oleh keinginan untuk menjalankan binari 32-bit yang ada pada instalasi 64-bit. Varian Unix lain telah membuat pilihan berbeda: Solaris dapat menjalankan program 64-bit pada kernel 32-bit dan sebaliknya, sementara OpenBSD tidak dapat menjalankan program 32-bit pada kernel 64-bit.
Anda dapat memperoleh informasi tentang CPU di /proc/cpuinfo. Jika CPU x86 Anda memiliki lmbenderanya, itu adalah CPU 64-bit.
Secara default, uname -matau archmemperlihatkan arsitektur tempat kernel dikompilasi. Linux dapat mengatur "kepribadian" dari suatu proses (dengan personality) panggilan sistem. Anda dapat menjalankan subproses dalam kepribadian yang berbeda dengan setarchperintah; setarch i686 someprogramatau linux32 someprogrammenjalankan program yang ditentukan di lingkungan tempat uname -mpengembalian i686sementara setarch amd64 someprogramatau linux64 someprogrammenjalankan program yang ditentukan di lingkungan tempat uname -mpengembalian amd64.
file /sbin/initmemberi tahu Anda apa arsitektur initprogram ini dikompilasi. Meskipun mungkin untuk menggabungkan executable 32-bit dan 64-bit dalam instalasi, biasanya semua program inti OS berasal dari arsitektur yang sama, karena jauh lebih mudah untuk dikelola.
$HOSTYPEadalah variabel bash dan memberi tahu Anda apa arsitektur bashprogram itu dikompilasi.
getconf LONG_BITmemberi tahu Anda apakah kompiler C default telah diatur untuk mengkompilasi program 32-bit atau 64-bit. Tes yang lebih tepat adalah dengan mengkompilasi dan menjalankan program yang mencetak sizeof(void*)atau sizeof(size_t)memanggil getconfhanya dapat memberikan informasi tentang apa yang getconfdianggap sebagai kompiler default.