2011-10-26 26 views
5

ताजा मणि सेट (आरवीएम का उपयोग करके) पर एक मशीन पर आरबीई और एमआरआई का एक नया इंस्टॉलेशन किया गया है फिर भी उनमें से प्रत्येक में जब मैं memprof का उपयोग करने की कोशिश करता हूं तो मुझे यह मिलता है त्रुटिरूबी 1.8.7: प्रतीक नहीं मिला त्रुटि

$ gem install memprof 
$ irb 
>> require 'rubygems' 
>> require 'memprof' 
>> LoadError: dlopen(/Users/schneems/.rvm/gems/[email protected]/gems/memprof-0.3.10/lib/memprof.bundle, 9): Symbol not found: __mh_bundle_header 
    Referenced from: /Users/schneems/.rvm/gems/[email protected]/gems/memprof-0.3.10/lib/memprof.bundle 
    Expected in: flat namespace 
in /Users/schneems/.rvm/gems/[email protected]/gems/memprof-0.3.10/lib/memprof.bundle - /Users/schneems/.rvm/gems/[email protected]/gems/memprof-0.3.10/lib/memprof.bundle 
    from /Users/schneems/.rvm/gems/[email protected]/gems/memprof-0.3.10/lib/memprof.bundle 
    from /Users/schneems/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:59:in `require' 
    from (irb):2 

त्रुटि Symbol not found: __mh_bundle_header है। मेरा सवाल यह है: मुझे इस प्रणाली को खोजने के लिए मेरे सिस्टम को पाने के लिए क्या करना है, या क्या मुझे कुछ और स्थापित करने की आवश्यकता है? किसी भी डीबगिंग सुझाव का स्वागत किया।

+0

संदिग्ध टैग [प्रतीक] के लिए यय। –

+1

मैंने टैग के बारे में एक मेटा प्रश्न पोस्ट किया है: http://meta.stackexchange.com/questions/110399/how-should-the-symbols-tags-be-split-up –

उत्तर

1

ऐसा लगता है कि यह सही ढंग से संकलित नहीं किया गया था और बंडल लाइब्रेरी के लिए लिंकर झंडे गायब था। इसे बनाने का प्रयास करें LDFLAGS="-bundle" ... मुझे यकीन नहीं है कि आप आरवीएम के साथ ऐसा कैसे करते हैं, लेकिन मुझे लगता है कि यह आपके द्वारा प्रदान किए जाने वाले पर्यावरण का वारिस करेगा।

संपादित करें | क्षमा करें, सही एलडी ध्वज की तरह दिखता है: LDFLAGS="-bundler_loader" संपादित करें 2 | असल में, मुझे यकीन नहीं है कि यह bundle या bundle_loader है ... मैं Google परिणामों में दोनों को देख रहा हूं।

+0

मैंने 'rvm export' का उपयोग करने का प्रयास किया दोनों झंडे और मुझे अभी भी त्रुटि मिल रही है। शायद सही आदेश नहीं है? – Schneems

+0

'आरवीएम निर्यात 'जीमेल के प्रबंधन के लिए प्रतीत होता है, संकलन सेटिंग्स को बदलने के लिए नहीं। सबसे पहले memprof को हटाने का प्रयास करें, फिर 'LDFLAGS = "- बंडल" मणि इंस्टॉल करें', और यदि यह काम नहीं करता है, तो रूबी को उसी तरह से बनाने का प्रयास करें (LDFLAGS सेट के साथ) ... यह कोशिश कर रहा है कि बैकट्रैक से स्पष्ट नहीं है बंडल का उपयोग करने के लिए। मुझे लगता है कि मणि को लोड करने की कोशिश करते समय यह वास्तव में रूबी है। – d11wtq

+0

ने 'एलडीएफएलजीएस = "- बंडल" मणि इंस्टॉल मेमोप्रोफ' और 'एलडीएफएलजीएस = "- बंडल" आरवीएम इंस्टॉल 1.8.7' और न तो काम किया। – Schneems

3

यह वही है मैं इसे Snow Leopard पर काम करने के लिए किया था:

cd ..../gems/memprof-0.3.10/ext/

संपादित Makefile, LD_SHARED =

से बदलें

LDSHARED = cc -arch x86_64 -dynamiclib -undefined suppress -flat_namespace

करने के लिए खोज

LDSHARED = cc -arch x86_64 -bundle -bundle_loader $(RUBY) -undefined suppress -flat_namespace

तब (-bundle और -bundleloader विकल्पों के साथ -dynamiclib प्रतिस्थापित),

make install (जो memprof.bundle और प्रतियां बनाता है यह memprof को */lib)

संपादित करें: बस स्पष्ट करने के लिए, $(RUBY) में रूबी दुभाषिया (निष्पादन योग्य) के लिए पूर्ण पथनाम होना चाहिए। आरवीएम के तहत, मेकफ़ाइल इसे उचित दुभाषिया के रूप में प्रारंभ करता है, इसलिए उपरोक्त रेखा किसी समस्या के बिना काम करती है।

+0

उत्तर के लिए धन्यवाद, जैसे ही मुझे मौका मिलता है, मैं इसे आज़माउंगा। उपर्युक्त परिवर्तन क्या है? – Schneems

+2

-बंडल एक बंडल बनाता है, एक मैक-विशिष्ट गतिशील लाइब्रेरी प्रारूप। मेमप्रोफ बंडल में होस्ट प्रोग्राम, रूबी दुभाषिया में प्रतीकों का संदर्भ है। -बंडल_लोडर विकल्प विशेष निष्पादन योग्य को इंगित करता है जो इस बंडल को लोड करने जा रहा है। –

+0

धन्यवाद, यह काम किया। मैंने एक बग दायर किया: https://github.com/ice799/memprof/issues/18 – John

संबंधित मुद्दे