2013-03-01 68 views
0

所以我試圖編譯一些代碼(具體的子彈物理演示),並且出現了一個錯誤提到SSE和SSE2未啓用。我檢查了Code :: Blocks中的編譯器標誌,並且SSE/SSE2不在那裏。我嘗試將標誌置於「其他選項」中(-msse,-msse2),並且不起作用。如何在Code :: Blocks上啓用SSE/SSE2?

然後,我看到一個帖子在這裏說stackoverflow,說試試「-march = native」,我做了。那也行不通。

我使用G ++(MinGW)進行編譯,而且我在Windows 7 x64上。

如果這意味着什麼,該項目正在使用自定義的生成文件。

+2

解釋「沒有工作」 - '-msse2'應該可以工作。我不熟悉'Code :: Blocks'(幾年前我嘗試過這個IDE,但並沒有使用它 - 我是一個「emacs +命令行」類型的人),但是如果「custom makefile「意味着你有一個不是由'Code :: Blocks'生成的makefile,那麼這將解釋爲什麼你不能在設置中設置任何東西 - 你需要將'-msse2'添加到makefile本身。 – 2013-03-01 12:07:34

回答

1

爲了完成這項工作,您需要將march設置爲支持SSE2的東西(比如Pentium4或Core2,在您的情況下,「native」也可能會在x86_64上運行後執行,但我從未使用過「native」)通過-msse2啓用SSE2。

但是:由於您使用自定義生成文件,你必須在你的makefile做到這一點 或必須使用環境變量 (忘了環境瓦爾,我只是看着,似乎可以控制幾乎一切通過這些,除了目標/優化選項)。

Code :: Blocks從項目文件編譯時設置編譯器選項,但不使用自定義生成文件時編譯器選項。用一個自定義的makefile,假定你知道你在做什麼,並且makefile「工作正常」。
不同的是,你可以設置你喜歡的任何選項,只要你使用cutom makefile就不會有任何效果。

+0

好的,謝謝。這幫助我找到了它。顯然這些人使用的就像一串makefile(不知道爲什麼,真的很奇怪),還有一個名爲flags.make的文件,它擁有項目的所有標誌。 – BananasGoMoo 2013-03-01 13:22:56