5

当我编译一个我用 C++ 编写的程序时(对于最新的 Macbook pro,它当然支持 AVX 指令集),我得到了以下错误。我正在使用从 Macports 获得的最新版本的 g++。您对我可以做些什么来修复错误而不限制编译器可用的指令集有任何想法吗?有什么特别值得我尝试更新的软件包吗?

g++-mp-4.7 -std=c++11 -Wall -Ofast -march=native -fno-rtti src/raw_to_json.cpp -o bin/raw_to_json.bin
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1831:no such instruction: `vpxor %xmm0, %xmm0,%xmm0'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1847:no such instruction: `vmovdqa %xmm0, 96(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1848:no such instruction: `vmovdqa %xmm0, 112(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1849:no such instruction: `vmovdqa %xmm0, 128(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1850:no such instruction: `vmovdqa %xmm0, 144(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1851:no such instruction: `vmovdqa %xmm0, 160(%rsp)'

谢谢您的帮助!

4

2 回答 2

6

为我解决此问题的一个更简单的解决方案是添加-Wa,-q到编译器标志。as从(版本 1.38)的手册页:

-q 使用 clang(1) 集成汇编器而不是基于 GNU 的系统汇编器。

于 2013-10-12T22:31:10.750 回答
4

感谢 Conrado PLG在此处对他自己的问题的回答。简而言之,我必须执行以下操作:

  1. 移动或以其他方式摆脱旧的as,发现在/opt/local/bin/../local/libexec/as/x86_64/as
  2. 将文森特·哈布奇 (Vincent Habchi) 的脚本复制/opt/local/bin/../local/libexec/as/x86_64/as.
  3. sudo chmod +x剧本。

请注意,由于调用汇编程序需要首先通过 shell 脚本,因此性能可能会有所下降。

于 2012-08-18T06:39:27.803 回答