मैं एक काफी बड़ा C ++ साझा-ऑब्जेक्ट लायब्रेरी लिख रहा हूं, और एक छोटी सी समस्या में चला गया है जो दर्द को कम करती है:
यदि मैं एक हेडर फ़ाइल में फ़ंक्शन / विधि को परिभाषित करता हूं, और इसके लिए एक स्टब बनाने के लिए भूल जाता हूं (विकास के दौरान), चूंकि मैं एक निष्पादन योग्य के बजाय एक साझा ऑब्जेक्ट लाइब्रेरी के रूप में निर्माण कर रहा हूं, कोई त्रुटि नहीं संकलन-समय पर मुझे बता रहा है। उस फंक्शन को लागू करना भूल गए। एकमात्र तरीका जो मुझे पता है कि कुछ गलत है, रनटाइम पर है, जब अंततः इस पुस्तकालय के खिलाफ एक आवेदन लिंक एक 'अपरिभाषित प्रतीक' त्रुटि के साथ खत्म हो जाता है।
मुझे यह जांचने का एक आसान तरीका मिल रहा है कि क्या मेरे पास सभी प्रतीक हैं जो मुझे संकलन के समय चाहिए, शायद कुछ मैं अपने मेकफिल में जोड़ सकता हूं।
एक समाधान जो मैंने किया था, वह है nm -C -U
कि सभी अपरिभाषित संदर्भों की एक लुप्तप्राय सूची प्राप्त करने के लिए संकलित पुस्तकालय को चलाना । समस्या यह है कि यह सभी संदर्भों की सूची के साथ भी आता है, जो अन्य पुस्तकालयों में हैं, जैसे जीएलआईबीसी, जो कि अंतिम आवेदन के साथ डालने पर इस पुस्तकालय के साथ निश्चित रूप से जुड़ा होगा। यह के उत्पादन में उपयोग करने के लिए संभव हो जाएगा nm
करने के लिए grep
अपने सभी हेडर फाइल के माध्यम से और अगर नामों में से कोई भी संबंधित को देखने के .. लेकिन यह पागल लगता है। निश्चित रूप से यह कोई असामान्य मुद्दा नहीं है और इसे हल करने का एक बेहतर तरीका है?
nm -C -u
मुझे कई बार बचाया है! (-u
मेरे सिस्टम पर लोअरकेस नोट करें ।) इस टिप्पणी को यहां छोड़ दें ताकि मैं अगली बार यह पा सकूं कि मुझे इसकी आवश्यकता है।