现在的位置: 首页 > 综合 > 正文

获得系统的位数(64 or 32)-几种方法

2013年01月23日 ⁄ 综合 ⁄ 共 729字 ⁄ 字号 评论关闭
用什么命令可以看出当前Linux是64位还是32位的?http://www.et8.net/bbs/showthread.php?t=838138
14楼给出了5种方法:
1. file 檢查的是檔案格式種類,不是 "CPU" 位數。
2. ldd 檢查的是 library 相依性狀態,看這個資訊不準的原因是相依性訊息只有在 64/32 混用時才會特別標示出來是連結到那一組函式庫的
3. uname 是核心的資訊,不一定是 CPU 位數。你可以在 64 位 CPU 上單純跑 32 位的 OS。樓主的問題應該以這個答案為主,畢竟他問的是 Linux 是 64 位還是 32 位的。(dmesg 的資料好像和這個一樣)
4. getconf WORD_BIT 有人說可以識別,但也有人說其實要看的是 LONG_BIT 的值才對。
5. 直接 cat /proc/cpuinfo 或許才是 CPU 最直接的答案

PS:
没有总结直接看看有没有/lib64目目录的方法。64位的系统会有/lib64和/lib两个目录,32位只有/lib一个。
另外,确实应该使用getconf LONG_BIT来辨别。WORD_BIT已不管用了。

方法当然还有,例如水波的面试题“不用sizeof来求出系统的位数,是16位还是32位?
不过,他没说64位系统,所以水波那儿没有直接的答案。

32位的系统中int类型和long类型一般都是4字节的。如果你的C语言教材里写的不是这样,劝你们老师换换教材吧。
64位的系统中int类型还是4字节的,但是long已变成了8字节的啦。这个教材里没写没关系,写了说明编者追踪最新的技术。

linux系统中可用"getconf WORD_BIT"和"getconf LONG_BIT"获得word和long的位数。64位系统中应该分别得到32和64.

抱歉!评论已关闭.