[英]How can I know if I am running in a 64bits or a 32bits linux from within a perl script?
我不想直接訪問外殼程序(例如使用uname)。 一旦知道我在Linux上,我正在尋找一種快速檢測架構的方法(僅當它是32位或64位時)。
您可能會問3個獨立的問題:
請注意,雖然沒有一個魔術“ 64位”,但可能有很多不同的含義。
/proc/cpuinfo
以難以解析的方式包含此信息。 基本上,您需要有一張有關不同CPU的表。 我相信,如果內核是64位的,那么“地址大小”中的數字將大於32。 use POSIX;
並檢查(POSIX::uname())[4]
是規范的答案,但-d /lib64
, -d /usr/lib64
為true也是一個很好的指示。 use Config;
並查看$Config{archname}
, $Config{myarchname}
, $Config{use64bitint}
或Config中與您認為“ 64位”含義相符的其他變量。 perl -e 'use Config; print $Config{longsize}';
在Perl的64位實現上將返回8個字節,在32位的Perl實現上將返回4個字節。
如果您想實際檢查硬件,則必須執行uname或檢查僅在64位計算機上合理存在的某些內容(例如/ lib64)。 請注意,如果您陷入32位應用程序中,那么了解64位的硬件支持通常不是很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.