【发布时间】:2019-04-08 23:04:55
【问题描述】:
有没有办法让 gcc 输出可用的 -march=arch 选项?我遇到了构建错误(尝试过-march=x86_64),我不知道我的选择是什么。
我使用的编译器是 gcc 的专有包装器,它似乎不喜欢 -march=skylake。标志应该是相同的,所以我假设我发送给 gcc 以转储架构的任何选项对于这个包装器都是相同的。
我设法使用虚假参数导致 gcc 出错,它转储了一个列表,但现在我正在通过一个包装器,我没有看到。
我怎样才能让 gcc 告诉我它支持什么?
【问题讨论】:
-
我在问题中提到包装器没有通过它 - 它实际上是跳到
cc,这只会引发错误。这是一个交叉编译,所以本机无法工作(但我并不真正关心优化,因为它只是一个基准测试) -
你刚刚写的,它不喜欢
-march=skylake,仅此而已。它是二进制文件还是脚本文件?您可以使用strings并搜索看起来很有希望的东西。 -
它是一个二进制文件——当它变得更重要时,我会努力完成它。我在同一个 CPU 上的不同操作系统上做两个基准测试,所以目前优化并不重要,只是 dhrystone makefile 推荐它
-
像
-O2这样的优化至少对于基准测试至关重要,最好是-O3 -fprofile-use -march=native(在使用-fprofile-generate运行之后)。如果您的意思是针对特定目标的调整并不重要,那么可以确定。
标签: gcc command-line x86 compiler-flags micro-architecture