我正在尝试在Mac OS 10.8.2上使用自行编译的GCC-4.7.1编译程序。该程序使用openMP,编译成功;然而,当我尝试运行该程序时,动态链接器会报错:
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错误消息)。