GCC:mtune vs march vs mcpu

时间:2017-03-10 12:35:54

标签: gcc

我试图在多个ARM SBC上进行一些优化构建,其中每个构建仅在我构建的目标平台上具有兼容性。

我已经听说-march在这里比-mtune更优选,因为它会通过生成仅与主机cpu兼容的指令来打破与架构系列中其他cpus的向后兼容性。另一方面,-mune将保持这种兼容性。

但是,我已经读过-mcpu可能是设置的最佳标志而不是-march或-mtune,因为-mcpu特定于处理器,而不仅仅是-marm指定的更常见的体系结构(a像-mcpu = cortex-a8 over -march = armv7-a)之类的差异。

现在最棘手的事情是我还读到-mcpu已被弃用且其功能被-mtune接管,这与我之前关于使用-mtune的评论相比,与-march和-march相比是不可取的与-mcpu相比,-marm是不受欢迎的。

基本上,当我不打算保持与其他cpu的兼容性时,哪个标志会给我主机的最佳性能。

1 个答案:

答案 0 :(得分:9)

不幸的是,

-mcpu对不同的目标有不同的语义。它是deprecated for x86(是-mtune的同义词)但不适用于ARM,a sum of -march and -mtune

所以要回答你的问题 - 在ARM上,总是使用-mcpu来获得最佳性能,除非你关心向后兼容性。