Если я работаю над машиной Unix, как я мог знать размер машины, является ли это 64-разрядной или 32-разрядной машиной?
AIX вы можете сделать это:
getconf KERNEL_BITMODE
HP-UX вы можете сделать это:
getconf KERNEL_BITS
или просто:
getconf -a | grep KERN
Sun Solaris , вы можете сделать это:
isainfo -v
Для Linux, да, uname -a
должен помочь
Если вы просто смотрите чтобы проверить архитектуру машины, на которой вы работаете,
%> uname -a
из командной строки обычно содержит указание в выводе.
Вы также можете попробовать sizeof (int *)
. Должно быть 4 на 32-битных машинах и 8 на 64-битных машинах.
Мне приходится иметь дело со многими платформами Unix, и, как правило, лучший способ, который я нашел, это посмотреть на вывод "uname -a". Например, если вы видите в выводе что-то вроде "i686 i686 i386 GNU/Linux", вы знаете, что это 32-битная машина. Если появится "amd64", то это 64. Иногда дело в том, что вы пытаетесь запустить 64-битную программу. Иногда это RTFM.
Предполагая, что вы хотите сделать это во время компиляции - посмотрите здесь , чтобы найти макросы архитектуры, которые вы можете протестировать. Вероятно, вы ищете __ x86_64 __
.