7
我想在Mac OS 10.8.2上使用自編譯的GCC-4.7.1來編譯程序。該程序使用openMP,編譯成功;然而,當我嘗試運行該程序,動態連接器與使用gcc-4.7和openMP缺少___emutls_get_address
dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/gcc-4.7.1/lib/libgomp.1.dylib
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/gcc-4.7.1/lib/libgomp.1.dylib
Expected in: /usr/lib/libSystem.B.dylib
這個問題抱怨與-fopenmp編譯任何程序一直存在,包括MWE
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hallo!\n");
return 0;
}
注意,建議的解決方案在What is the "___emutls_get_address" symbol?中,即在鏈接階段添加-lgcc_eh
,不起作用(我仍然得到相同的dyld錯誤信息)。
奇怪的是,我根據[本指南]在OS X 10.8.2上最近編譯了GCC 4.7.1(http://solarianprogrammer.com/2012/07/21/compiling-gcc-4-7-1- mac-osx-lion /),OpenMP支持完美無瑕。 –
@HristoIliev我會再次檢查我如何編譯它並嘗試重新編譯。希望問題消失... –
類似的問題和答案已張貼在那裏: http://stackoverflow.com/questions/7885246/what-is-the-emutls-get-address-symbol – FabienRohrer