मैं अपने प्रोजेक्ट में कुछ कोड को एक अलग पुस्तकालय में विभाजित कर रहा हूं ताकि किसी अन्य एप्लिकेशन में पुन: उपयोग किया जा सके। इस नई पुस्तकालय में विभिन्न कार्यों परिभाषित हैं लेकिन लागू नहीं, और मेरी वर्तमान परियोजना और अन्य एप्लिकेशन दोनों इन कार्यों के अपने संस्करणों को लागू करेंगे।मैं उन कार्यों को संकलित करने के लिए जीसीसी को कैसे मजबूर कर सकता हूं जिनका उपयोग नहीं किया जाता है?
मैंने इन कार्यों को अपनी मूल परियोजना में लागू किया, लेकिन उन्हें इसके अंदर कहीं भी नहीं कहा जाता है। उन्हें केवल इस नई पुस्तकालय द्वारा बुलाया जाता है। नतीजतन, कंपाइलर उन्हें अनुकूलित करता है, और मैं असफलताओं को जोड़ता हूं। जब मैं इन कार्यों में एक डमी कॉल जोड़ता हूं, तो लिंकिंग विफलताओं गायब हो जाती है।
क्या इन कार्यों को संकलित करने के लिए जीसीसी को बताने का कोई तरीका है भले ही उन्हें बुलाया न जाए?
मैं एसएसई लिनक्स (x86-64_linux_2.6.5_ImageSLES9SP3-3) पर -O2
का उपयोग कर जीसीसी 4.2.2 के साथ संकलित कर रहा हूं।
क्या आपने -O0 का उपयोग करने का प्रयास किया है? –
@jcomeau: लेकिन अगर आप उन्हें अनुकूलित करना चाहते हैं तो क्या होगा? – Cascabel
यदि यह अनुकूलन के बिना काम करता है, तो करने के लिए यह पता लगाना है कि कौन से विशिष्ट अनुकूलन बंद हो जाएं; संभवतः -नो-इनलाइन-छोटे-फ़ंक्शंस एक होंगे, लेकिन मैंने कभी भी गहराई से खोला नहीं है कि जीसीसी अपने जादू कैसे करता है –