【问题标题】:How to tell if program is running on x86/x64 or ARM Linux platforms如何判断程序是在 x86/x64 还是 ARM Linux 平台上运行
【发布时间】:2016-04-17 07:33:02
【问题描述】:

c 程序中,我想做不同的事情。该程序将在基于 x86/x64 的 GNU/Linux 系统以及基于 ARM 的系统上运行,例如在 PC 或 RaspberryPI 上。

GCC 中是否有预定义的宏来告诉平台?

类似

#ifdef _X64_
   /do x64 stuff
#elif _ARM_
//do arm stuff
#endif

或者也许这是错误的方法?我将使用Makefile进行编译,我可以摆脱我自己的定义。

最好/最安全的方法是什么?

【问题讨论】:

标签: c linux gcc makefile


【解决方案1】:

这些帖子已经回答了这个问题:
GCC predefined macros for architecture X, Detecting CPU architecture compile-time

你可以在这里:
http://sourceforge.net/p/predef/wiki/Architectures/

您的方法应该只用于一小部分代码或功能,但它应该有效。

编辑:
基本上,因为链接可能会失效:
__arm__ 应该在 ARM 上工作。
__x86_64__ 应该在 x64 架构上工作。

是的,你可以这样做:

#ifdef __x86_64__    
    // do x64 stuff   
#elif __arm__    
    // do arm stuff
#endif    

【讨论】:

  • 这充分回答了这个问题。链接页面中的内联内容只会使答案更有可能有一天会过时。
猜你喜欢
  • 2023-03-03
  • 2011-12-14
  • 2012-01-07
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 2021-10-15
  • 2014-10-05
  • 1970-01-01
相关资源
最近更新 更多