Sto provando a compilare un programma utilizzando un GCC-4.7.1 auto-compilato su Mac OS 10.8.2. Il programma utilizza openMP e la compilazione ha esito positivo; tuttavia, quando si tenta di eseguire il programma, il linker dinamico lamenta conManca ___emutls_get_address con gcc-4.7 e 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
Questo problema è costantemente presente in ogni programma compilato con -fopenmp, tra cui il MWE
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hallo!\n");
return 0;
}
nota che la soluzione suggerita in What is the "___emutls_get_address" symbol?, ovvero l'aggiunta di -lgcc_eh
nella fase di collegamento, non funziona (ho ancora lo stesso messaggio di errore dyld).
Strano, ho compilato di recente GCC 4.7.1 su OS X 10.8.2 in base a [questa guida] (http://solarianprogrammer.com/2012/07/21/compiling-gcc-4-7-1- mac-osx-lion /) e il supporto OpenMP funziona perfettamente. –
@HristoIliev Verificherò di nuovo come l'ho compilato e provo a ricompilare. Speriamo che il problema scompaia ... –
Una domanda e una risposta simili sono state pubblicate lì: http://stackoverflow.com/questions/7885246/what-is-the-emutls-get-address-symbol – FabienRohrer