10

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エラーメッセージが表示されます)。

4

2 に答える 2