我不想直接访问shell(例如使用uname)。我正在寻找一种快速检测架构的方法(只有当它是32或64位时),一旦我知道我在linux上。
答案 0 :(得分:6)
您可能会问3个单独的问题:
请注意,没有一个神奇的“64位”,可能意味着很多不同的东西。
/proc/cpuinfo
以难以解析的方式包含此信息。您基本上需要有一个表格来说明不同的CPU。我相信如果内核是64位的话,你会在“地址大小”中得到大于32的数字。use POSIX;
并且检查(POSIX::uname())[4]
是规范的答案,但-d /lib64
,-d /usr/lib64
为真也是一个很好的指标。use Config;
并查看$Config{archname}
,$Config{myarchname}
,$Config{use64bitint}
或配置中与您认为“64位”相符的其他变量。答案 1 :(得分:1)
perl -e 'use Config; print $Config{longsize}';
在Perl的64位实现上返回8个字节,在Perl的32位实现上返回4个字节。
如果要实际检查硬件,则必须执行uname或检查64位计算机上合理存在的内容(如/ lib64)。请注意,如果您遇到32位应用程序,知道64位硬件支持通常不是很有用。