MacOS10.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
この問題は、MWEを含め、-fopenmpでコンパイルされたすべてのプログラムに常に存在します。
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hallo!\n");
return 0;
}
「___emutls_get_address」記号とは何ですか?で提案されている解決策に注意してください。、つまりリンクフェーズでの追加-lgcc_eh
は機能しません(同じdyldエラーメッセージが表示されます)。