如何判断程序是在 x86/x64 还是 ARM Linux 平台上运行

2023-12-15

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

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

就像是

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

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

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


这些帖子已经回答了这个问题:
GCC 为架构 X 预定义的宏, 检测CPU架构编译时

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

您的方法应该仅用于一小部分代码或函数,但它应该有效。

Edit:
基本上,因为链接可能会变得无效:
__arm__应该可以在ARM上工作。
__x86_64__应该在 x64 架构上工作。

是的,你可以这样做:

#ifdef __x86_64__    
    // do x64 stuff   
#elif __arm__    
    // do arm stuff
#endif    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何判断程序是在 x86/x64 还是 ARM Linux 平台上运行 的相关文章

随机推荐