你正在使用的Go版本是什么(go version
)?
目前仅适用于Go 1.18,因为GOAMD64仍处于开发中。
你正在使用的操作系统和处理器架构是什么(go env
)?
使用GOAMD64变量的x86_64,v1、v2、v3、v4。
你做了什么?
我建议使用GOAMD64=vX
变量集构建时,应该将正确的-march=x86_64-vX
(即GOAMD64=v3
-> -march=x86_64-v3
)应用于用于CGo的C编译器。这允许C代码也优化为使用更新的目标架构,该目标架构支持较新的指令。在可能应用不存在的目标之前,我们需要检查C编译器是否支持这些目标架构(看起来GCC11和Clang12是最初支持的版本:https://www.phoronix.com/scan.php?page=news_item&px=GCC-11-x86-64-Feature-Levels)。
与#45453相关
2条答案
按热度按时间jm81lzqq1#
Go工具链是否已经足够了解C/C++工具链,以判断它们是否支持这个
-march
标志?有没有一种便宜的方法来弄清楚这一点?从#45453(评论)中接手这个问题。qojgxg4l2#
在cmd/go中,我们使用
(*Builder).gccSupportsFlag
。在cmd/link中,我们使用linkerFlagSupported
。如果需要的话,我们可以在cmd/cgo中做类似的事情。