Tôi đang cố gắng biên dịch chương trình bằng GCC-4.7.1 tự biên dịch trên Mac OS 10.8.2. Chương trình sử dụng openMP và trình biên dịch thành công; Tuy nhiên, khi tôi cố gắng để chạy các chương trình, các mối liên kết động phàn nàn vớiThiếu ___emutls_get_address với gcc-4.7 và 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
Vấn đề này liên tục xuất hiện trong bất kỳ chương trình biên soạn với -fopenmp, bao gồm MWe
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hallo!\n");
return 0;
}
Lưu ý rằng giải pháp gợi ý trong What is the "___emutls_get_address" symbol?, cụ thể là thêm -lgcc_eh
trong giai đoạn liên kết, không hoạt động (tôi vẫn nhận được cùng một thông báo lỗi dyld).
Lạ, tôi đã biên dịch gần đây GCC 4.7.1 trên OS X 10.8.2 theo [hướng dẫn này] (http://solarianprogrammer.com/2012/07/21/compiling-gcc-4-7-1- mac-osx-lion /) và hỗ trợ OpenMP hoạt động hoàn hảo. –
@HristoIliev Tôi sẽ kiểm tra lại cách tôi biên soạn nó và thử biên dịch lại. Hy vọng rằng vấn đề biến mất ... –
Một câu hỏi và câu trả lời tương tự đã được đăng ở đó: http://stackoverflow.com/questions/7885246/what-is-the-emutls-get-address-symbol – FabienRohrer