作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用使用 SIMD 内在函数的 cmake 编译 C 程序。当我尝试编译它时,出现两个错误
/usr/lib/gcc/x86_64-linux-gnu/5/include/smmintrin.h:326:1: 错误:调用 always_inline '_mm_mullo_epi32' 时内联失败:目标特定选项错配 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
/usr/lib/gcc/x86_64-linux-gnu/5/include/tmmintrin.h:136:1: 错误:调用 always_inline '_mm_shuffle_epi8' 时内联失败:目标特定选项错配 _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
这里已经解决了这个问题StackOverflow通过设置
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
我尝试了完全相同的许多其他选项。但是我的项目仍然无法编译。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -sse4_1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=nehalem")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1 -msse4.2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ssse3")
最佳答案
由于您正在编译 C 代码,而不是 C++,因此您需要:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
您可以摆脱所有其他 -march XXX
和 -msseXXX
设置。
如果您混合使用 C 和 C++,那么您还可以添加:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
关于c - 调用 always_inline ‘_mm_mullo_epi32’ : target specific option mismatch 时内联失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43128698/
我是一名优秀的程序员,十分优秀!