【发布时间】:2011-11-20 15:31:20
【问题描述】:
我正在用 gcc 编写一个程序,该程序具有用于性能关键部分的 asm 语言,并且我想确保在运行时程序在正确的体系结构上运行。特别是,我需要区分 Linux 上的 ia64 (Itanium) 和 x86_64。
我只是阅读 /proc/cpuinfo 吗?看起来很笨重,但我找不到合适的内核调用。
【问题讨论】:
我正在用 gcc 编写一个程序,该程序具有用于性能关键部分的 asm 语言,并且我想确保在运行时程序在正确的体系结构上运行。特别是,我需要区分 Linux 上的 ia64 (Itanium) 和 x86_64。
我只是阅读 /proc/cpuinfo 吗?看起来很笨重,但我找不到合适的内核调用。
【问题讨论】:
IA64 和 x86_64 是完全不同的架构。为一个程序构建的程序根本无法在另一个程序上运行,所以你的问题没有意义(事实上,与 x86 指令集的不兼容是 IA64 市场渗透率低迷的原因之一,因为基于 IA64 的系统不能运行大量现有的、基于 x86 的传统 32 位应用程序)。
最好的办法是编译两个不同版本的程序,然后在用户调用程序时使用包装脚本选择适当的二进制文件。
【讨论】:
/proc/cpuinfo是linux上CPU信息的标准接口。
这是最佳选择,因为它旨在独立于架构。
【讨论】:
【讨论】: