如何检查我的 Perl 安装是 32 位还是 64 位?

问题描述 投票:0回答:6

在 Windows 上,如何检查我安装的 Perl 是 32 位还是 64 位?

perl
6个回答
25
投票

如果您想检查它是使用 32 位整数还是 64 位整数,请使用以下命令:

perl -V:ivsize      # use Config; say $Config{ivsize}
  • 如果返回值为 4,则您的 Perl 使用 32 位整数。
  • 如果返回值为 8,则您的 Perl 使用 64 位整数。

另请参阅:回答“MAX_INT 的 Perl 等价物是什么?”


如果你想检查它是使用32位指针还是64位指针,请使用以下命令:

perl -V:ptrsize     # use Config; say $Config{ptrsize}
  • 如果返回值为 4,则您的 Perl 可以寻址 4 GiB RAM。
  • 如果返回值为 8,则您的 Perl 可以寻址“无限”RAM。

如果您想检查它是 32 位程序还是 64 位程序,请使用以下命令:

perl -V:archname    # use Config; say $Config{archname}
  • 如果返回值包含
    x86_64
    ,则为64位进程。
  • 如果返回值包含
    x86
    (但不包含
    x86_64
    ),则为32位进程。

该值也包含在

perl -v
的输出中。


注意:您不应该检查

use64bitint
use64bitall
,因为它们指示哪些参数传递给
Configure
,而不是提供有关实际使用的信息。


18
投票

我正在阅读这个问题是为了询问 Perl 是否是 64 位编译的,而不是 Windows 或 CPU 是否是。

Perl 可以配置为使用不同程度的 64 位。您可以使用配置模块查找它。

要检查 Perl 是否编译为使用 64 位整数,您可以查看 Config 中的

use64bitint
条目。

use Config;
print $Config{use64bitint};

define
表示是。

还有...

  • use64bitall
    意味着 Perl 将被编译为使用它可以使用的所有 64 位,包括 64 位指针,允许您访问超过 2 GB 的内存。
  • ivsize
    表示 Perl 将使用多少字节来存储整数,8 表示 64 位。
  • ptrsize
    是 Perl 将使用多少位来存储指针,这允许您每个进程使用超过 2 GB 的内存,8 表示 64 位。

常见的配置变量及其值可以在

perl -V
中看到(注意大写的V)。它们的定义可以通过
perldoc Config
找到。

注意,无论您的操作系统或 CPU 是 32 位还是 64 位,您都可以将 Perl 编译为使用 64 位整数。在 32 位 CPU 上,Perl 将使用“整数”以外的类型来存储数字,可能是“长整数”。


3
投票

log(~0 +1)/log(2)
之所以有效,是因为:

  • ~0 是“按位不为零”-> UINT_MAX
  • UINT_MAX 是 2^32-1 或 2^64-1,具体取决于架构(或编译选项)
  • log(2^32)/log(2) = 32 和 log(2^64)/log(2) = 64,按设计。

所以基本上这个命令命令 perl 来表示有多少位有它的 UINT_MAX。

$ perl -e "print log(~0 +1)/log(2)"
32
 $ perl -V:archname
archname='MSWin32-x86-multi-thread';


1
投票

只需检查版本/版本:

perl -v

我得到了:

This is perl, v5.8.8 built for msys-64int

Copyright 1987-2006, Larry Wall

...

0
投票

考虑使用:

$width = ~0==2**32-1 ? 32:64;

-4
投票

只需使用

log(~0 +1)/log(2) 

....

© www.soinside.com 2019 - 2024. All rights reserved.