2012-11-16 21 views
7

के साथ ___emutls_get_address गुम है मैक ओएस 10.8.2 पर एक स्वयं संकलित जीसीसी -4.7.1 का उपयोग कर प्रोग्राम को संकलित करने का प्रयास कर रहा हूं। कार्यक्रम ओपनएमपी का उपयोग करता है और संकलन सफल होता है; तथापि, जब मैं इस कार्यक्रम को चलाने के लिए प्रयास करते हैं, गतिशील लिंकरgcc-4.7 और 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 

इस मुद्दे के साथ शिकायत करता है, लगातार -fopenmp साथ संकलित किसी भी कार्यक्रम में मौजूद है मेगावाट

#include <stdio.h> 

int main() { 
    #pragma omp parallel 
    printf("Hallo!\n"); 
    return 0; 
} 

ध्यान दें कि समाधान का सुझाव दिया सहित What is the "___emutls_get_address" symbol? में, अर्थात् लिंकिंग चरण में -lgcc_eh जोड़ना, काम नहीं करता है (मुझे अभी भी एक ही त्रुटि त्रुटि संदेश मिलता है)।

+0

अजीब, मैंने हाल ही में जीसी 4.7.1 को ओएस एक्स 10.8.2 पर संकलित किया [इस गाइड] के अनुसार [http://solarianprogrammer.com/2012/07/21/compiling-gcc-4-7-1- मैक-ओएसएक्स-शेर /) और ओपनएमपी समर्थन बेकार ढंग से काम करता है। –

+0

@HristoIliev मैं फिर से जांच करूंगा कि मैंने इसे कैसे संकलित किया और पुनः संयोजित करने का प्रयास किया। उम्मीद है कि यह मुद्दा गायब हो जाएगा ... –

+0

एक समान प्रश्न और उत्तर पोस्ट किया गया है: http://stackoverflow.com/questions/7885246/what-is-the-emutls-get-address-symbol – FabienRohrer

उत्तर

1

मुझे बिल्कुल वही समस्या थी। मेरे मामले में यह एक्सकोड द्वारा स्थापित जीसीसी के पुराने संस्करण की लाइब्रेरी (मुझे याद नहीं है) के लिंकिंग के कारण हुआ था, जो/usr/lib में था। जब मैंने इसे संकलित करने के लिए उपयोग किए गए संस्करण की नई जीसीसी लाइब्रेरी के खिलाफ लिंक करने के लिए इसे सही किया (इन/यूएसआर/स्थानीय) में यह त्रुटि तय की गई थी।

तो बस अपने बनाया निष्पादन की जाँच करें और सभी पुस्तकालयों यह

otool -L EXECUTABLE_OR_DYLIB 

उपयोग करने के साथ जुड़ा हुआ है और यदि आप किसी पुराने जीसीसी के एक पुस्तकालय के साथ जुड़ा हुआ कुछ भी करता है, तो यह है कि ठीक।