我怎么知道我是在perl脚本中运行64位还是32位linux?

时间:2011-03-16 17:31:43

标签: linux perl architecture

我不想直接访问shell(例如使用uname)。我正在寻找一种快速检测架构的方法(只有当它是32或64位时),一旦我知道我在linux上。

2 个答案:

答案 0 :(得分:6)

您可能会问3个单独的问题:

请注意,没有一个神奇的“64位”,可能意味着很多不同的东西。

  1. 什么是硬件? - /proc/cpuinfo以难以解析的方式包含此信息。您基本上需要有一个表格来说明不同的CPU。我相信如果内核是64位的话,你会在“地址大小”中得到大于32的数字。
  2. 什么是OS /内核? - 我相信use POSIX;并且检查(POSIX::uname())[4]是规范的答案,但-d /lib64-d /usr/lib64为真也是一个很好的指标。
  3. 这是64位perl吗? - 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位硬件支持通常不是很有用。