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

时间:2016-01-12 15:40:09

标签: c linux gcc makefile

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

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

类似

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

或者这可能是错误的做法?我将使用Makefile进行编译,我可以使用自己的定义。

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

1 个答案:

答案 0 :(得分:2)

这些帖子已经回答:
GCC predefined macros for architecture XDetecting CPU architecture compile-time

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

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

修改
基本上,因为链接可能变得无效:
sys.path.insert(1, 'C:/Python27/Lib/site-packages') 应该适用于ARM __arm__应该适用于x64架构。

是的,你可以这样做:

__x86_64__