If I am working on a Unix machine, how could I know the size of the machine whether it is 64-bit or 32-bit machine?
-
Check the size of pointers if available in you language. Be more specific. – Guillaume Apr 08 '10 at 16:15
6 Answers
AIX you can do this:
getconf KERNEL_BITMODE
HP-UX you can do this:
getconf KERNEL_BITS
or just:
getconf -a | grep KERN
Sun Solaris you can do this:
isainfo -v
For Linux, yes, the uname -a
should do the trick

- 7,932
- 10
- 50
- 71
-
as i am working on hp...getconf -a is not working... but getconf KERNEL_BITS is working fine. – Vijay Apr 14 '10 at 04:33
-
android ? :D ... i manage to install LinuxOnAndroid (rooted device) and getconf -a | grep KERN returns nothing :( also uname -m, or arch returns armv71 – THESorcerer Feb 06 '15 at 08:56
-
These commands only show the installed kernel bit size mode. For possible CPU modes, look in `lscpu` or at [another question's answer](https://stackoverflow.com/a/246014). – Dominik Oct 22 '17 at 13:36
You can type
uname -m
if i686 or i386 is appearing, you are working with 32 bit if X86_64 is appearing, you are working with 64 bit

- 11,693
- 6
- 41
- 65

- 359
- 1
- 5
- 12
I have to deal with a lot of Unix platforms and generally the best way I have found is to look at the output of "uname -a". For example, if you see something like "i686 i686 i386 GNU/Linux" in the output you know it's a 32 bit machine. If "amd64" shows up it's a 64. Sometimes it's a matter of trying to run a 64 bit programme. Sometimes it's RTFM.

- 1,501
- 11
- 8
If you're just looking to check the architecture of a machine you're on,
%> uname -a
from the command line usually contains an indication in the output.

- 7,245
- 3
- 30
- 53
You can also try sizeof(int *)
. Should be 4 on 32 bit machines and 8 on 64 bit machines.

- 4,798
- 1
- 21
- 15
-
There's no reason why I can't target a 32-bit executable on a 64-bit computer. Where I work, we haven't bothered changing some apps to 64 bits (although some eat memory by the gigabyte, and need to be run on 64-bit machines). – David Thornley Apr 08 '10 at 19:03
Assuming you want to do this at compile time - take a look here for architecture macros you can test. You are probably looking for __x86_64__
.

- 82,306
- 11
- 110
- 171