tags:

views:

115

answers:

5

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.

A: 

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__.

Nikolai N Fetissov
A: 

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.

Adam
A: 

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.

Dr. Tim
+3  A: 

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

BrianH
as i am working on hp...getconf -a is not working... but getconf KERNEL_BITS is working fine.
Vijay Sarathi
A: 

You can also try sizeof(int *). Should be 4 on 32 bit machines and 8 on 64 bit machines.

JayM
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