लाइब्रेरी कैसे ढूंढें, जिसमें विशेष फ़ंक्शन की परिभाषा शामिल है? मुझे लिंकर त्रुटि मिल रही है।जीएनयू बिल्ड सिस्टम प्रश्न
उत्तर
आप बाइनरी में निर्यात प्रतीकों सूची nm
कमांड लाइन उपकरण का उपयोग कर सकते हैं:
~/src> cat nm-test.c
static int plus_four(int x)
{
return x + 4;
}
int sum_plus_four(int a, int b)
{
return plus_four(a + b);
}
int product_plus_four(int a, int b)
{
return plus_four(a * b);
}
~/src> gcc -c nm-test.c
~/src> nm ./nm-test.o
00000000 t plus_four
00000023 T product_plus_four
0000000b T sum_plus_four
the manual के अनुसार, 'टी' का मतलब है कि प्रतीक कोड (पाठ) खंड में है, और बड़े साधन यह सार्वजनिक है।
यदि आपके पास कोई प्रतीक है जिसे आप ढूंढ रहे हैं, तो आप nm
का उपयोग कर सकते हैं ताकि पुस्तकालय द्वारा उपलब्ध प्रतीकों को निर्यात किया जा सके। grep:
$ find -name lib*.a /example/library/path | xargs nm | grep -E "T $SYMBOL_TO_FIND"
यह कमांड लाइन एक अनचाहे स्केच है, लेकिन इसे अवधारणा को दिखाना चाहिए।
यदि यह सी मानक एपीआई का हिस्सा है तो बस man
चलाएं, यह स्पष्ट रूप से बताएगा कि फ़ंक्शन को परिभाषित किया गया है।
और यदि ऐसा नहीं है, तो लाइब्रेरी दस्तावेज संभवतः बताता है कि इसे कैसे लिंक करें। – nos
यदि आप गैर-प्रोग्रामेटिक तरीके से लाइब्रेरी को खोजना चाहते हैं, तो आपको LSB Navigator उपयोगी मिल सकता है। खोज बॉक्स में फ़ंक्शन दर्ज करें, और हरे रंग की "स्थिति" के साथ लाइन में लाइब्रेरी की जांच करें।
http://coldattic.info/pic/165509391387.png
यह (उदाहरण के ऊपर दर्शाया में, librt
mq_unlink
के लिए सही पुस्तकालय है, इसलिए आप -lrt
के साथ लिंक) "पारंपरिक" पुस्तकालय समारोह में शामिल है कि हो जाएगा। बस उस पुस्तकालय से लिंक करें, और यह लगभग सभी लिनक्स सिस्टम पर काम करेगा।
नोट: मैं सुझाए गए टूल के डेवलपर्स में से एक था।
- 1. स्पीडअप जीएनयू बिल्ड प्रक्रिया बनाते हैं - समांतरता?
- 2. PHP बिल्ड सिस्टम
- 3. इंपीरेटिव बनाम घोषणात्मक बिल्ड सिस्टम
- 4. सिस्टम की उपयोगिता। डायग्नोस्टिक्स। प्रश्न
- 5. जीएनयू ऑटोोटूल
- 6. जीएनयू मेक। एक मेकफ़ाइल
- 7. एक्सकोड बिल्ड सिस्टम को सीखना और समझना
- 8. एक्सकोड 4 बाहरी बिल्ड सिस्टम कोड पूर्णता
- 9. सब्लिमे टेक्स्ट बिल्ड सिस्टम जो सिर्फ "बनाने"
- 10. सब्लिमे टेक्स्ट 2: बिल्ड सिस्टम कस्टम चयनकर्ता
- 11. क्यूएस क्रिएटर बिल्ड सिस्टम ओएसएक्स अपग्रेड
- 12. आप जीएनयू ऑटोोटूल
- 13. जीएनयू/लिनक्स
- 14. जीएनयू मेकफ़ाइल
- 15. जीएनयू समांतर
- 16. बिल्ड
- 17. जीएनयू मेक: $ (eval)
- 18. जीएनयू सी ++
- 19. जीएनयू प्रोलॉग
- 20. जीएनयू स्रोत
- 21. जीएसएल-जीएनयू
- 22. जीएनयू ऑक्टेव
- 23. जीएनयू लिंकर
- 24. जीएनयू समांतर
- 25. जीएनयू Emacs
- 26. जीएनयू/लिनक्स
- 27. जीएनयू समांतर
- 28. मैक डेवलपर क्या स्वचालित बिल्ड सिस्टम का उपयोग करते हैं?
- 29. विजुअल स्टूडियो परियोजनाओं के लिए स्टैंड-अलोन बिल्ड सिस्टम
- 30. मल्टी-प्रोजेक्ट चींटी बिल्ड सिस्टम को कैसे इकट्ठा करें
क्या यह फ़ंक्शन नाम दिए गए लाइब्रेरी के बजाय लाइब्रेरी दिए गए फ़ंक्शन नाम नहीं ढूंढता है? –
@Pete: सच है, लेकिन चूंकि यह जानकारी निर्यात करता है, इसका उपयोग पुस्तकालय फ़ाइलों पर grep के लिए किया जा सकता है। – unwind
धन्यवाद .. मुझे मिल गया .. – Dinesh