重複の可能性:
特定のLinuxが32ビットか64ビットかを判断する方法は?
64ビットシステムの場合は1つのプログラムをシェル化し、32ビットシステムの場合は別のプログラムをシェル化できるシェルスクリプトshファイルを作成する方法を知っている人はいますか?ありがとうございます。
重複の可能性:
特定のLinuxが32ビットか64ビットかを判断する方法は?
64ビットシステムの場合は1つのプログラムをシェル化し、32ビットシステムの場合は別のプログラムをシェル化できるシェルスクリプトshファイルを作成する方法を知っている人はいますか?ありがとうございます。
if $(uname -m | grep '64'); then
echo "ARCH: 64-bit"
else
echo "ARCH: 32-bit"
fi
試してみてくださいuname -m
:x86_64
は64ビットカーネル、i686
は32ビットカーネルです。これに基づいて、いずれかのプログラムを呼び出すことができます。
(thkalaのコメントに応えて。)
if echo __SIZEOF_POINTER__ | cpp -E - - | grep '^8$' >/dev/null; then
do_stuff
fi
どこでも機能する可能性は低いですが、cppがGCCからのものである場合は機能します。x64(POWER、SPARC、IA64など)だけでなく、64ビットアーキテクチャを検出できるという利点があります。
プロセッサがカーネルではなく64ビットであるかどうかを知りたい場合は、システムでロングモード(-lm)フラグを検索できます。32ビットではなく64ビットで存在します。
cat /proc/cpuinfo | grep lm