我正在用gcc编写一个程序,它有asm语言用于性能关键部分,我想确保在运行时程序运行在正确的架构上。特别是,我需要在Linux上区分ia64(Itanium)和x86_64。
我只是读/ proc / cpuinfo吗?看起来很笨,但我找不到合适的内核调用。
答案 0 :(得分:2)
/proc/cpuinfo
是linux上CPU信息的标准接口。
这是最佳选择,因为它旨在独立于架构。
答案 1 :(得分:2)
IA64和x86_64是完全不同的架构。为一个构建的程序根本不会在另一个上运行,所以你的问题没有意义(实际上,与x86指令集的不兼容是IA64市场渗透率低的原因之一,因为基于IA64的系统不能运行各种现有的,基于32位x86的传统应用程序。)
您可以做的最好的事情是编译程序的两个不同版本,然后使用包装器脚本在用户调用程序时选择适当的二进制文件。
答案 2 :(得分:2)