建立时CPU与Arch之间发生冲突

时间:2018-11-04 06:49:46

标签: gcc arm

我对gcc的mcpu和march选项有疑问。 在我的设置中,环境变量使用-mcpu = cortex-a7和-march = armv7ve,而构建应用程序时遇到以下错误。

$unwind

实际上cortex-A7使用armv7-a架构。不确定为什么会出现此冲突问题。

1 个答案:

答案 0 :(得分:3)

即使确实是Cortex-A7使用ARMv7-A架构,也确实是Cortex-A7实现了并非所有ARMv7-A处理器都实现的扩展功能;更具体地说,Cortex-A7实现了ARMv7ve变体。

通常,在gcc选项中同时指定-mcpu和-march是多余的,因为-mcpu(告诉编译器生成将在特定处理器上运行的代码)暗含了-march(告诉编译器生成以下代码:将在特定的架构或变体上运行)。如果只关心程序必须能够在Cortex-A7上运行,则可以使用-mcpu = cortex-a7;如果您的程序必须能够在任何ARMv7-A处理器上运行,则必须使用-march = armv7-a(如果希望针对Cortex-A7优化代码,则可以选择添加-tune = cortex-a7。在其他处理器上运行。