我已將GCC 4.2編譯爲XCode 4.2中的LLVM GCC 4.2,並且在OpenMP下運行了_mm_shuffle_ps本身的奇怪鏈接器錯誤。此功能將工作別的地方,但一旦我把它放在一個OMP塊內它開始產生下面的鏈接器錯誤:在Xcode 4(LLVM GCC)中使用_mm_shuffle_ps時可能出現的OpenMP + SSE錯誤
"___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 arch?)和使用的編譯器標誌。它看起來像缺少一個ia32特定函數,但是您正在鏈接x86_64版本。也許編譯器的標誌/定義關閉 – sehe
我正在編譯MacPro(OS X 10.7.2,2.8 GHz四核英特爾至強處理器),但我也試過MacPro(OS X 10.6.8,2 x 2.26四核核心Intel Xeon)。編譯器標誌是啓用了OpenMP和SSE的所有Xcode默認值。由於它在OpenMP塊之外工作,我認爲它不是我現有的設置。 – cubiclewar