خب ، نتایج کارم تا الان:
این دو لینک رو بخونید:
http://msdn.microsoft.com/en-us/magazine/cc301696.aspx
http://www.phreedom.org/solar/code/tinype
در ادامه نتایج کارم رو می بینید. (strip و upx رو هم اضافه کردم. سویچ MD کامپایلر مایکروسافت هم خیلی جالب بود ، بهترین نتیجه رو داد. البته با این کار ، نیاز به MSVCRT.dll هنگام اجرای برنامه خواهیم داشت که همین dll loading خودش سربار داره ، ولی خب هدف این پست کمترین سایز خروجیه)
توجه: سویچ /OPT:NOWIN98 که در مقالۀ بالا بهش اشاره شده ، دیگه تو لینکر مایکروسافت ساپورت نمیشه (اگر هم بخوایم از /ALIGN استفاده کنیم ، باید سویچ /DRIVER رو هم به کار ببریم. (یعنی فقط برای device driver ها می تونیم این کارو بکنیم))
نتایج کارم :
C with cl : 47 KB (strip: 46.5 KB, upx -9: 24.5 KB)
C with cl /Ox /Os : 47 KB
C with cl /MD : 5.5 KB (strip: 5 KB , upx: 4 KB)
C with cl /O1 libctiny.lib : 2.5 KB (strip: 2 KB , upx: error)
C with gcc : 15.4 KB (strip: 5.5 KB , upx -9: 13.4 KB)
C with gcc -Os : 15.2 KB
C++ with cl : 95.5 KB (strip: 95 KB , upx -9: 45 KB)
C++ with cl /Ox /Os : 92 KB
C++ with cl /MD : 8 KB
C++ with g++ : 477 KB (strip: 270 KB , upx -9: 289 KB)
C++ with g++ -Os : 476 KB
خب ، اگه کسی لینک های داده شده رو مطالعه کرد و باز هم سوال داشت ، بپرسه.
در ضمن کسی کامپایلر یا راه بهتری سراغ داره ؟