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
と文句を言い、この問題が解決を提案していることMWE
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hallo!\n");
return 0;
}
注意を含め、-fopenmpでコンパイルされた任意のプログラム中に常に存在し、 What is the "___emutls_get_address" symbol?にあります。つまり、リンクフェーズで-lgcc_eh
を追加しても機能しません(同じdyldエラーメッセージが表示されます)。
奇妙なことに、私は[このガイド](http://solarianprogrammer.com/2012/07/21/compiling-gcc-4-7-1-html)に従って、最近OS X 10.8.2でGCC 4.7.1をコンパイルしました。 mac-osx-lion /)とOpenMPサポートは完璧に動作します。 –
@HristoIliev私はそれをどのようにコンパイルして再コンパイルを試みるか再度確認します。うまくいけば問題は消える... –
同様の質問と回答がそこに掲載されている: http://stackoverflow.com/questions/7885246/what-is-the-emutls-get-address-symbol – FabienRohrer