【发布时间】:2012-11-16 10:30:49
【问题描述】:
我正在尝试在 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错误消息)。
【问题讨论】:
-
奇怪,我最近确实根据this guide 在 OS X 10.8.2 上编译了 GCC 4.7.1,并且 OpenMP 支持完美无缺。
-
@HristoIliev 我将再次检查我是如何编译它并尝试重新编译的。希望问题消失...
-
类似的问题和答案已经在那里发布:stackoverflow.com/questions/7885246/…
-
将org.deeplearning4j的版本从1.0.0-beta5升级到1.0.0-beta6后就ok了。
标签: gcc openmp dynamic-linking gcc4.7