簡體   English   中英

我怎么知道我在Perl腳本中是在64位還是32位Linux上運行?

[英]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位”,但可能有很多不同的含義。

  1. 什么是硬件? - /proc/cpuinfo以難以解析的方式包含此信息。 基本上,您需要有一張有關不同CPU的表。 我相信,如果內核是64位的,那么“地址大小”中的數字將大於32。
  2. 什么是操作系統/內核? -我相信use POSIX; 並檢查(POSIX::uname())[4]是規范的答案,但-d /lib64-d /usr/lib64為true也是一個很好的指示。
  3. 這是64位的perl嗎? - 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM