مقدار اندک RAM و دستگاه های ذخیره سازی طولانی مدت در رایانه های شخصی در گذشته محدودیت های بسیار شدیدی را در اندازه برنامه ها اعمال می کرد. این مشکل امروز وجود ندارد. با این حال ، حتی اکنون نیز گاهی اوقات مهم است که اندازه ماژول exe برنامه توسعه یافته را به حداقل ممکن برسانید.
ضروری
- - منبع
- - کامپایلر ، پیوند دهنده ؛
- - کمپرسورهای ماژول های PE ، مانند UPX ، Themida.
دستورالعمل ها
مرحله 1
نسخه قابل اجرا از برنامه را بسازید. پیکربندی مناسب را در تنظیمات پروژه در IDE انتخاب کنید. اگر چنین پیکربندی وجود ندارد ، آن را بر اساس تنظیمات موجود ایجاد کنید. با حذف و افزودن دستورالعمل های مناسب ، لیست گزینه های پیوند دهنده را تغییر دهید. بنابراین ، هنگام استفاده از یک بسته توسعه از مایکروسافت ، باید گزینه / اشکال زدایی را حذف کنید. همچنین می توانید دستورالعمل زیر را به کد منبع اضافه کنید: #pragma comment (linker، "/ RELEASE")
گام 2
پروژه را پیکربندی کنید تا حد امکان از پیوند اجرایی با کتابخانه های استاتیک جلوگیری کند. از نسخه های مشترک کتابخانه های مربوطه استفاده کنید. به عنوان مثال ، می توانید کد کتابخانه های زمان اجرا C و C ++ را با جایگزینی گزینه linker / ML یا / MT (کتابخانه های استاتیک یک رشته ای و چند رشته ای) با / MD (CRT DLL چند رشته ای) حذف کنید.
مرحله 3
ادغام بخشهای مختلف ماژول exe را در یکی در نظر بگیرید. اگر پرونده به اندازه کافی بزرگ باشد ، این روش نتیجه قابل توجهی نخواهد داشت ، اما با اندازه اولیه ماژول 20-30 کیلوبایت ، سود قابل توجهی خواهد بود. گزینه / merge linker به شما امکان می دهد بخشها را ادغام کنید. می توانید آن را از طریق پارامترهای پروژه تنظیم کنید: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data یا با استفاده از دستورالعمل های پراگما در کد منبع: #pragma comment (linker ، "/ ادغام:.text =.data ") # نظر عملی (پیوند دهنده ،" /merge:.reloc=.data ")#pragma نظر (لینک دهنده ، "/merge:.rdata=.data ")# نظرات پراگما (لینک دهنده ،") / merge:.idata =.data ") تعریف ویژگیهای بخش حاصل نیز منطقی است: #pragma comment (linker،" /section:.data، rwe ")
مرحله 4
با تعیین حداقل مقدار اندازه بلوک هایی که در مرزهایی که مقاطع تراز شده اند ، اندازه exe را کاهش دهید. از گزینه / filealign linker که با ویرایش خصوصیات پروژه یا دستورالعمل عملی مشخص شده استفاده کنید: #pragma comment (linker، "/ filealign: 0x200") این روش برای ماژول های کوچک مناسب است.
مرحله 5
سعی کنید اندازه پرونده exe را با ایجاد گزینه های بهینه سازی برای کاهش میزان کد دستگاه ، کاهش دهید. گزینه های کامپایلر / O2 یا / Od را با / O1 جایگزین کنید.
مرحله 6
علامت استاندارد DOS را در ماژول exe با مالکیت خود جایگزین کنید ، که حداقل اندازه را خواهد داشت. از گزینه / stub linker استفاده کنید: #pragma comment (linker، "/stub:mystub.exe ")Hhere mystub.exe نام فایل اجرایی DOS است که به عنوان یک خرد به ماژول exe اضافه خواهد شد.
مرحله 7
در نظر گرفتن نقطه ورود خود به برنامه. با این کار کد اولیه کتابخانه های زمان اجرا ساکن از بین می رود. از گزینه / link linker استفاده کنید ، به عنوان مثال: #pragma comment (linker، "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL، "Hello!"، "Message!"، MB_OK)؛}
مرحله 8
ابزارهای بسته بندی مانند UPX ، ASPack ، Themida ، PEC را در پرونده exe کامل اعمال کنید. داده های ماژول فشرده می شوند. پس از راه اندازی برنامه ، آنها در حافظه بسته می شوند. این روش نتایج خوبی برای پرونده های بزرگ exe حاوی مقدار زیادی داده استاتیک با آنتروپی کم (به عنوان مثال ، رسترهای DIB در بخش منابع) ارائه می دهد.