如何在 Code::Blocks 上启用 SSE/SSE2?

Posted

技术标签:

【中文标题】如何在 Code::Blocks 上启用 SSE/SSE2?【英文标题】:How to enable SSE/SSE2 on Code::Blocks? 【发布时间】:2013-03-01 11:52:31 【问题描述】:

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

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

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

如果这意味着什么,则项目正在使用自定义 makefile。

【问题讨论】:

解释“那不起作用” - -msse2 绝对应该起作用。我对Code::Blocks 不熟悉(几年前我确实尝试过那个IDE,但没有经常使用它——我是一个“emacs + 命令行”类型的人),但是如果“自定义 makefile”意味着你有一个不是由Code::Blocks生成的makefile,那么这就解释了为什么你在设置中设置东西没有效果——你需要将-msse2添加到makefile本身。 【参考方案1】:

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

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

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

【讨论】:

好的,谢谢。这帮助我找到了它。显然这些人使用的是一串 makefile(不知道为什么,真的很奇怪),其中一个有一个名为 flags.make 的文件,其中包含项目的所有标志。

以上是关于如何在 Code::Blocks 上启用 SSE/SSE2?的主要内容,如果未能解决你的问题,请参考以下文章

从 Code::Blocks 配置 g++ 不会影响命令行

如何直接编译最初用 code::blocks 编写的代码

如何在 code::blocks 中使用 graphics.h 编译和运行程序?

Code::Blocks 调试器在 Kubuntu 上非常缓慢

如何在Code::Blocks中查看打开的文件或项目中的函数列表?

启用 arch:SSE2 使程序变慢