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

11
在Windows系统中,如何检查Perl的安装版本是32位还是64位?

1
你为什么想知道呢?正如两个答案所反映的那样,32位或64位可能意味着不止一件事情;你实际上在问什么并不清楚。 - ysth
来到这里寻找同样问题的答案。在我的情况下,我有两个架构的二进制模块,并且需要动态加载正确的模块。 - Andrey Starodubtsev
对于log(〜0 +1)/ log(2)的解释:〜0 +1产生最大整数,log(N)/ log(2)获取N的以2为底的对数。请参阅perldoc perlop和perldoc -f log。 - Vad Ivanov
5个回答

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 的输出中。


注意:你不应该检查 use64bitintuse64bitall,因为它们表示传递给 Configure 的参数,而不提供有关实际使用情况的信息。


18

我在阅读问题,想要问的是Perl是否被编译为64位,而不是Windows或CPU。

Perl可以配置为使用不同程度的64位性能。您可以使用Config模块查找此信息。

要检查Perl是否已编译以使用64位整数,请查看Config中的use64bitint条目。

use Config;
print $Config{use64bitint};

define 表示“是”。

还有其他的一些配置选项:

  • use64bitall 表示 Perl 将被编译以使用所有 64 位的功能,包括使用 64 位指针,允许您访问超过 2GB 的内存。
  • ivsize 表示 Perl 用于存储整数的字节数,8 表示 64 位。
  • ptrsize 表示 Perl 用于存储指针的位数,允许您在每个进程中使用超过 2GB 的内存,8 表示 64 位。

常用的配置变量及其值可以在 perl -V(注意 V 大写) 中查看。它们的定义可以在 perldoc Config 中找到。

请注意,您可以将 Perl 编译为使用 64 位整数,而不管您的操作系统或 CPU 是否为 32 位或 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

...

2
perl -v 的输出中的 64int 并不表示一个 64 位程序。虽然 perl -v 通常会告诉您它是一个 32 位还是 64 位进程(包括 x86x86_64),但您表明它在 msys 上无法正常工作(无论如何都不会告诉您)。 - ikegami

-4

只需使用

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

....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接