构建时 cpu 和 arch 之间的冲突

Ani*_*lla 2 gcc arm

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

error: switch -mcpu=cortex-a7 conflicts with -march=armv7-a switch [-Werror]
Run Code Online (Sandbox Code Playgroud)

实际上cortex-A7使用的是armv7-a架构。不知道为什么会出现这个冲突问题。

Fra*_*vra 6

尽管 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 进行优化,同时仍能够在其他处理器上运行)。