आप किसी भी आवश्यक समर्थन पुस्तकालयों को लिंक नहीं किया। सी वैश्विक वस्तुओं जैसे stdin, stdout, stderr सिर्फ कहीं से नहीं दिखाई देते हैं। कमांड तर्क और पर्यावरण चर ऑपरेटिंग सिस्टम से खींचे जाते हैं। और बाहर निकलने पर उन सभी atexit()
कार्यों को कॉल किया जाता है और main
से वापसी कोड exit(return_code)
पर भेज दिया जाता है। आदि
gcc -dumpspecs
, gcc -print-libgcc-file-name
आदेशों को देखें। उस निर्देशिका में अन्य सभी पुस्तकालयों को देखो। आपको उन पुस्तकालयों और ऑब्जेक्ट फ़ाइलों को डंपस्पेक्स के आउटपुट में संदर्भित किया जाएगा। मुझे नहीं पता कि उन spec नियमों का अर्थ कब या कैसे किया जाता है लेकिन आप शायद विचार प्राप्त कर सकते हैं। और मुझे लगता है कि जीसीसी जानकारी पेज info gcc
विस्तार से समझाते हैं यदि आप काफी दूर तक खोदते हैं।
info gcc
और उसके बाद 'जी' दबाएं और फिर enter 'युक्ति फ़ाइलें'
और के रूप में जोनाथन Leffler ने कहा, शॉर्टकट वर्बोज़ विकल्प के साथ जीसीसी को चलाने के लिए है: gcc -v
और बस क्या आज्ञा देता है यह प्रयोग किया जाता है देखते हैं।
स्रोत
2016-08-24 23:29:13
यह देखने के लिए कि 'कंपाइलर वास्तव में क्या आदेश देता है,' gcc -v main.c' चलाएं। ध्यान दें कि यह आपके द्वारा दिए गए की तुलना में 'ld' के लिए एक बहुत अधिक जटिल कमांड लाइन चलाता है। –
जीसीसी के चरम लंबे 'एलडी' तर्क हमेशा अनिवार्य नहीं होते हैं। एक सरल 'हैलो, वर्ल्ड' प्रोग्राम केवल पूरी तरह से जुड़ा जा सकता है: 'ld -lc -lkernel32 src.o -o src.exe'। –
@RyanB मुझे "-lc नहीं मिल सकता"। –