如何判断程序是在x86 / x64还是ARM Linux平台上运行
在c
程序中,我想做不同的事情。 该程序将在基于x86 / x64的GNU / Linux系统以及基于ARM的系统(例如PC或RaspberryPI)上运行。
GCC中是否有预定义的宏来告诉平台?
就像是
#ifdef _X64_ /do x64 stuff #elif _ARM_ //do arm stuff #endif
或者这可能是错误的做法? 我将使用Makefile
进行编译,我可以使用自己的定义。
什么是最好/最安全的方法?
这些post已经回答了这个问题:
GCC为架构X预定义宏 , 检测CPU架构编译时
你可以在这里:
http://sourceforge.net/p/predef/wiki/Architectures/
您的方法应该只用于代码或函数的一小部分,但它应该工作。
编辑:
基本上,因为链接可能变得无效:
__arm__
应该适用于ARM。
__x86_64__
应该适用于x64架构。
是的,你可以这样做:
#ifdef __x86_64__ // do x64 stuff #elif __arm__ // do arm stuff #endif