【发布时间】:2013-04-30 21:09:28
【问题描述】:
我正在尝试使用 cmake 编译一些 C++ 代码,并使用包含 <emmintrin.h> 的 make 并得到以下 make 错误:
#error "SSE2 instruction set not enabled"
我有一个带有 Linux (Mint) 系统(内核 3.5)的 Intel Celeron Dual Core 处理器。
根据维基百科,赛扬双核能够执行 SSE2 指令,并且 sse2 标志根据/proc/cpuinfo 设置。但是this question 的作者提到了英特尔赛扬对 SSE 的有限支持。
我已经尝试在我的CMakeLists.txt 中使用 SSE 编译器选项:
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-msse -msse2 -msse3")
..但没有任何改变。 cmake . 工作正常,但 make 给出了上面的错误消息。
我必须更改 CMakeLists.txt 中的设置还是赛扬双核根本不(完全)支持 SSE2?
【问题讨论】:
-
您检查过您的 BIOS 设置吗? techarp.com/showfreebog.aspx?lang=0&bogno=259
-
是的,我的 BIOS 没有启用或禁用 SSE 的设置。
-
cmake 和 make 不是一对一的映射。如果您使用生成的 makefile 进行 make,请确保它已包含这些 SSE2 标志。
-
你试过
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -msse2 -msse3")(注意引号的位置)还是set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")? -
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")有效!谢谢!你知道为什么吗?请发表您的评论作为答案,以便我接受...
标签: c++ linux cmake intel sse2