T-L-M

أصغر ملف تنفيذي يمكن كتابته

33 ردود في هذا الموضوع

السلام عليكم ورحمة الله وبركاته.

أنا عملت برنامج صغير جداً بالفيجوال سي ++ ، هذا هو:

#include <iostream.h>
int main()
{
       cout << "how are you ? ";
       return 0;
}

حجم هذا البرنامج حوالي 172 كليو, أعتقد أنه شيء غريب جداً، لماذ كل هذا الحجم ؟

مع أني أسمع أن لغة السي ++ و السي، من مزاياها أن حجم تطبيقاتها أصغر من بعض اللغات الأخرى.

طبعاً أنا لا زلت مبتدئ جداً في البرمجة بهذه اللغة ، وإذا كان هذا السؤال لا زال مبكراً بالنسبة لشخص مثلي، فأرجو أن ترشدوني لما هو السبب، أو تعطوني رؤوس مواضيع فقط، حول تقليل حجم الملف التنفيذي النهائي.

بصراحة هذا الحجم جعلني أتعجب كثيراً !!

شكراً لكم، والسلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

وعليكم السلام ورحمة الله وبركاته

حجم الملف كبير لانك تستخدم على ما اعتقد debug mode, من ما يضيف الكثير من المعلومات للملف التنفيذي..

إذا كنت تستخدم vc6 فعليك ان تذهب إلى build->configurations وتختار release بدل من debug وستلاحظ ان حجم الملف سيصبح اقل بكثير من ما هو عليه..

والسلام عليكم

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً لك أخي أحمد

لكن، لم أتمكن من تطبيق الأمر الذي أشرت إليه.

لا أعرف كيف أختار Release بدل Debug، هل تقصد علي أن أحذف الأمر Debug، حتى وإن فعلت فالحجم هو نفسه !

لقد اخترت الأمر ريليز، وقمت بصنع البرنامج مرة أخرى، ولكن بعد تكوين الملف، فتحت configurations، ووجدت أن الخيار لا زال محدداً على الـ Debug ؟ !!

mosh4tm.png

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً أخي أحمد، الآن تمكنت من اختيار الوضع المناسب.

كان ينبغي أن أذهب إلى set active configuration، ثم أختار Release من هناك.

الآن الحجم 36 كليو، بس أعتقد أنه لا زال كبير :)

بانتظار الردود والآراء ...

السلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

معذرة كان قصدى set activ configuration بدل من configuration:

عليك ان تختار build->set activ configuration ->release :::

,والسلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يبدو أننا كنا نكتب الرد في نفس الوقت :)

أنا ذكرت أن الحجم الآن 36 كليو، وانا اعتقد أن لا زال كبيراً، لبرنامج يقوم فقط، بعرض سطر واحد على شاشة الدوس :)

بانتظار الردود والآراء :]

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

تستطيع كتابة نفس البرنامج فى لغة الاسمبلي ولن يستهلك اكثر من كيلو وذلك بدمج الكود والمتغيرات فى نفس السيكشن, للاسف فى لغة السى بلس بلس هناك header يضاف إلى البرنامج يجعله بهذا الحجم ولكن إذا قمت بكتابة برنامج يحتوى على اشياء كثيرة فلن يزيد الحجم بنفس النسبة لان جزء الـheader لن يتضاعف لمجرد ان البرنامج يقوم باشياء كثيرة..

والسلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً أخي أحمد مرة أخرى،

لكن هل أفهم من كلامك، أن أصغر برنامج يمكن عمله بالسي ++ سيكون حجمه 36 ك أو أكثر، لأن الهيدر سيضاف إلى الملف ؟ !

آسف على الإزعاج :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هناك برامج يمكنها تقليل حجم الexe أو الdll بدرجة كبيرة أشهرها upx

http://upx.sourceforge.net/

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أعرف، معظم هذه البرامج، لكن أنا أسأل عن الحجم في الوضع الطبيعي بدون ضغط !

وشكراً على الرد :)

تم تعديل بواسطه T-L-M
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

حياك الله ما فى إزعاك بالعكس هذا موضوع مهم وهناك الكثيرين من من لا يعرف خبايا الكمبايلر..

إجابة على سؤال بالتاكيد لا هناك طرق واساليب لتقليل حجم الملف او لتسريع التنفيذ, إذا ذهبت إلى project->settings ثم اخترت C/C++ ستجد خيار إسمه optimizations من هذا القائمة تستطيع ان تختار حجم الملف ليتناسب إما معى السرعة او معى الحجم او تضع اختيار على حسب رغبتك..

ويمكنك ايضاً دمج بعض الاقسام (sections ) لتتناسب معى عمل برنامجك وهذا بدوره يقلل حجم البرنامج التنفيذي , طبعاً هناك header يدمج معى البرنامج وانا فى الحقيقة لا اعرف حجمه بالظبط ولكن له حجم ثابت, ويحتوى على معلومات عن المترجم المستخدم لانشاء المشروع والنسخة واشياء اخرى, وطبعاً لا ننسى انه إذا إستخدمت مكتبات اخرى مثل الMFC سيزيد الحجم لان هذه المكتبات تضع شفرة اضافية لتغليف دوال الAPI.

والسلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

36 كيلو بايت يعتبر قليل جدا بالنسبة للغات الأخرى

فمثلا VB6 يتطلب runtime dll حجمها لا يقل عن ميجا بايت

و .NET يتطلب الframework حجمها أكثر من 20 ميجا بايت و يتم تحميلها في ذاكرة البرنامج عن التشغيل

كما أن برامج الJava تتطلب JVM و حجمها مماثل تقريبا لحجم ال.Net Framework

بالنسبة لDelphi لا أتذكر و لكن أعتقد أن حجم برنامج Hello World بها لن يقل عن 100 كيلو بايت

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً لك أخي أحمد على سرعة الرد، وسعة الصدر :)

جزاك الله خيراً، وجعل ما تقوم به في ميزان حسناتك يوم لا ينفع مالٌ ولا بنون إلا من أتى الله بقلبٍ سليم.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ظلمت الدلفى يا اسامة لغة الدلفي من افضل لغات البرمجة, ومستواها قريب جداً من السي بلس بلس, وفى بعض الاحيان الدلفي افضل من السي بلس بلس فى برمجة الهاردوير, لاحظ ان مبرمجي لغة الدلفى عباقرة فى الاسمبلي ويستخدمة شفرة اسمبلى اكثر من جماعة السي بلس بلس.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

@ أسامة

بالنسبة للدلفي، إذا قمت بعمل برنامج كونسل، يقوم بعمل مثل البرنامج المذكور سابقاً، سيكون حجم الملف 8 كليو ( أنا استخدم دلفي 6 )

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أنا مش قصدي حاجة عن الدلفي أنا كنت حتعلمها بس محبتش الsyntax بتاعها و syntax ال pascal بصفة عامة فقلت أفضل مع السي بلس بلس :D

طبعا الدلفي لغة رائعة و cross-platform و كل حاجة و سريعة و لكن كل شخص له ما يفضله

أنا كنت بتكلم بس عن حجم الHello World بإستخدام النوافذ أنا مكنتش أعرف إن دلفي بتعملConsole

تم تعديل بواسطه usama707
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يمكن كتابة برنامج دلفي حجمه أقل من 4 كيلو بايت

رأيت برامج حجمها أقل من كيلوا واحد

هناك مكتبة خاصة LibCTiny يمكن إستعمالها في VC

libctiny.zip

MiniDExe.rar

تم تعديل بواسطه DeltaAziz
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أنا كنت حاسس إني سأتعرض لهجوم مكثف من جماعة الدلفي :D

و لكن لدرجة 4 كيلو بايت أو كيلو واحد !

أنا لم أرى مثل هذا إلا في الأسمبلي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ممكن تعطينا رابط لهذه المكتبة أخي دلتا ؟

وإذا كان عندك الأمثلة على برامج دلفي التي ذكرتها أرجو أن تضعها أيضاً :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً أخي دلتا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
أنا كنت حاسس إني سأتعرض لهجوم مكثف من جماعة الدلفي

:D

على فكرة مبرمجي الدلفي أغلبهم لا يهاجمون إلا عندما يهاجموا ...

كما قلت انت لكل ميوله واختيار اللغة يرجع الى متطلبات الشخص ...

على فكرة دعم بورلاند لباسكال بدلاً عن السي بعض من أسبابه التنافس القديم بينها وبين مايكروسوفت التي أضطرت بورلاند لترك ميدان السي لها فالكل يعلم أن مترجمات بورلاند سواء للباسكال او السي كانت هي الأفضل على الإطلاق حينها (هذا الكلام زمان ايام turbo c و ms c و Symantic c .. ).

نقطة مهمة : غالباً المشكلة ليست في اللغة أو في بيئة التطوير ولكنها في المبرمج :)

شكراً DeltaAziz على الوصلات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

WCRT is a small C runtime library for Visual C++, which implements parts of its functionality through calls to the Win32API

WCRTبديل أخر لمن يريد ملفات تنفيذية صغيرة

WCRT_1.12.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تحياااا الدلفي :D

صدق أو لا تصدق أقل من 1 ك.ب في الدلفي ممكن

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تحياااا الدلفي  :D

صدق أو لا تصدق أقل من 1 ك.ب في الدلفي ممكن

حاااسب, انا غيووور جدا على السي :angry: , و مع هذا لا اصدق :P

لأن الأسمبلي أصغر برنامج تخرجه في الويندوز 1 كيلو بايت , فقط يعرض رسالة ويغلق مره اخرى

وسبب تقليص الحجم لهذا الحد هو هذا الأمر في عملية الربط

/MERGE:.rdata=.text

تضمين البيانات مع التعليمات في مكان واحد

والنتيجة 1 كيلو فقط ولا يوجد اقل من هذا , فهل عملية الربط في الدلفي تختصر اكثر من هذا ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .