जब मैं एक नहीं सेशन कार्यक्रम संकलित:जीसीसी लक्ष्य EXE कोड आकार को कम करना?
जीसीसी (LLVM के समान परिणाम के रूप में अच्छी तरह से):
विभिन्न compilers के साथint main(void) { return 0; }
10 KiB निष्पादन योग्य (
-s
साथ संकलित) दीसेक्शन:
.CRT
,.bss
,.data
,.idata
,.rdata
,.text
,.tls
msvcrt.dll
औरkernel32.dll
MSVC 2010 को निर्भर करता है:
.data
,.rdata
: एक 5.5 किबा निष्पादन योग्य (/MD /Ox
साथ संकलित)धारा दिया ,
.reloc
,.text
msvcr100.dll
औरkernel32.dll
पर निर्भर करता है और आगे के साथ
.rdata
मर्ज करके कम हो गई है सका.text
विंडोज ड्राइवर किट 7.1: एक 6.5 किबा निष्पादन योग्य (
/MD /Ox
साथ संकलित,msvcrt_winxp.obj
के साथ जुड़ा हुआ दी इसे XP पर चलाने की अनुमति देने के लिए)सेक्शन:
.data
,.rdata
,.text
msvcrt.dll
औरkernel32.dll
पर निर्भर करता है और आगे
.text
Windows 2003 ड्राइवर डेवलपमेंट किट के साथ विलय
.rdata
से कम हो गई है सका: दी 3.5 KiB निष्पादन योग्यसेक्शन:
.data
,.rdata
,.text
msvcrt.dll
पर निर्भर करता है और आगे
.text
टिनी सी संकलक (TCC) के साथ
.rdata
मर्ज करके कम हो गई है सका: दी एक 1।5 किबा निष्पादनसेक्शन:
.data
,.text
msvcrt.dll
पर निर्भर करता है तो मुझे लगता है कि सवाल सरल है:
आगे करने के लिए क्या यह संभव है जीसीसी या एलएलवीएम के लक्ष्य निष्पादन योग्य आकार को कम करें ताकि वे msvcrt.dll
से लिंक करते समय, न्यूनतम-न्यूनतम संभव के करीब हों?
(संपादित करें: मैं स्पष्ट रूप से, आदि UPX
तरह पैकर की तलाश नहीं कर रहा हूँ)
क्या आप समझा सकते हैं कि आप क्यों पूछ रहे हैं? क्या आप अक्सर इस तरह के एक छोटे से कार्यक्रम संकलित करते हैं? अच्छी तरह से यथार्थवादी कार्यक्रमों को संकलित करने के लिए एक कंपाइलर के लिए यह अधिक महत्वपूर्ण नहीं है ?? (उनमें से ज्यादातर बहुत बड़ा हैं)! –
http://stackoverflow.com/questions/1413171/what-is-strip-gcc-plication-used-for, http://embeddedfreak.wordpress.com/2009/02/10/removing-unused-functionsdead-codes -with-gccgnu-ld/ – Ulterior
@Ulterior: '-s' विकल्प 'स्ट्रिप' जैसा ही है। अन्य विकल्पों में भी मदद नहीं मिली। – Mehrdad