0

所以我试图编译一些代码(具体来说是子弹物理演示),然后出现了一个错误,说 SSE 和 SSE2 没有启用。我检查了 Code::Blocks 中的编译器标志,并且 SSE/SSE2 不在那里。我试图将标志放在“其他选项”中(-msse,-msse2),但没有奏效。

然后我在 stackoverflow 上看到了一个帖子,上面说尝试“-march=native”,我做到了。那也没有用。

我正在使用 G++ (MinGW) 进行编译,并且我在 Windows 7 x64 上。

如果这意味着什么,则该项目正在使用自定义生成文件。

4

1 回答 1

1

要完成这项工作,您需要march设置支持 SSE2 的东西(比如 Pentium4 或 Core2,在您的情况下,“native”也可能会这样做,因为您在 x86_64 上运行,但我从未使用过“native”)通过启用 SSE2 -msse2

但是:由于您使用自定义 makefile,您必须在您的 makefile 中执行此操作, 或者您必须使用环境变量(忘记环境变量,我刚刚看过,似乎您可以通过这些控制几乎所有内容,除了目标/优化选项)。

Code::Blocks 在您从项目文件编译时设置编译器选项,但在使用自定义 makefile 时不设置。使用自定义 makefile,假设您知道自己在做什么,并且 makefile“工作正常”。
换一种说法,你可以设置任何你喜欢的选项,只要你使用定制的makefile,它们就不会产生任何影响。

于 2013-03-01T12:08:56.120 回答