【发布时间】:2011-11-12 23:20:57
【问题描述】:
我已将我的编译器从 GCC 切换到 XCode 4.2 中的 LLVM GCC 4.2,并且在 OpenMP 下遇到了 _mm_shuffle_ps 内在函数的奇怪链接器错误。这个函数可以在其他地方工作,但是一旦我把它放在一个 omp 块中,它就会开始生成以下链接器错误:
"___builtin_ia32_shufps", referenced from:
__ZN7Annulus12traceFactorsEP9PrimitiveP8VFMatrix.omp_fn.0 in Annulus.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
我的代码基本结构如下:
#pragma omp parallel {
//Some stuff
#pragma omp for {
//Do more stuff including _mm_shuffle_ps
}
}
代码在 GCC 4.2 中运行良好,所以这是 OpenMP 的 LLVM GCC 实现中的一个错误,还是我需要一个奇异的编译器标志?
【问题讨论】:
-
也许您应该告诉使用平台(CPU 架构?)和使用的编译器标志。看起来您缺少 ia32 特定功能,但您正在链接 x86_64 版本。也许编译器标志/定义已关闭
-
我在 MacPro(OS X 10.7.2、2.8 GHz 四核 Intel Xeon)上编译,但我也尝试在 MacPro(OS X 10.6.8、2 x 2.26 四核英特尔至强)。编译器标志是启用 OpenMP 和 SSE 的所有 Xcode 默认值。由于它在 OpenMP 块之外工作,我认为它不是我现有的设置。