Ich versuche, ein Programm mit einem selbst kompilierten GCC-4.7.1 auf Mac OS 10.8.2 zu kompilieren. Das Programm verwendet openMP und die Kompilierung ist erfolgreich. aber wenn ich versuche, das Programm auszuführen, der dynamische Linker klagt mitFehlende ___emutls_get_address mit gcc-4.7 und 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
Dieses Problem ist ständig präsent in jedem Programm mit -fopenmp zusammengestellt, einschließlich der MWE
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hallo!\n");
return 0;
}
Beachten Sie, dass die vorgeschlagene Lösung in What is the "___emutls_get_address" symbol?, nämlich Hinzufügen von -lgcc_eh
in der Verknüpfungsphase, funktioniert nicht (ich bekomme immer noch die gleiche Fehlermeldung).
Komisch, ich habe kürzlich GCC 4.7.1 auf OS X 10.8.2 nach [dieser Anleitung] zusammengestellt (http://solarianprogrammer.com/2012/07/21/compiling-gcc-4-7-1- mac-osx-lion /) und die OpenMP-Unterstützung funktioniert einwandfrei. –
@HristoIliev Ich überprüfe noch einmal, wie ich es kompiliert habe und versuche es neu zu kompilieren. Hoffentlich verschwindet das Problem ... –
Eine ähnliche Frage und Antwort sind dort geschrieben worden: http://StackOverflow.com/Questions/7885246/what-is-the-emutls-get-address-symbol – FabienRohrer