Sign in Join
Wiki copytemporary

Revision 1 of 2, by FTurtle on 6-6-2015. The page as it is now.

Lazarus Faq/ar

<div dir="rtl" style="text-align: right;">

لماذا يكون حجم الملف التنفيذي الناتج كبير ؟

تكون الملفات التنفيذية كبيرة لاحتوائها علي معلومات التنقيح (debug information) واللازمة لعمل (gdb منقح جنو ).

المفسر يحتوي علي خيار لأزالة هذه المعلومات من الملف التنفيذي (-Xs),ولكن نظرا لوجود علة في المفسر (الاصدار 2.0.2 وما قبله ),فإنه لا يعمل جيدا . تم إصلاح هذه العلة بدءا من الاصدار 2.0.4 من المفسر.

كذلك يمكنك أستخدام برنامج strip لأزالة معلومات التنقيح من الملف التنفيذي . وتجده عادة في المسار

lazarus/pp/bin/i386-win32/.

كل ما عليك هو تنفيذ اﻷمر

strip --strip-all <your executable file with path>

إذا أردت تصغير حجم البرنامج أكثر عليك تجربة UPX أيضا .UPX أداة رائعة لضغط الملفات التنفيذية ,كما أنه سريع في عملية فك الضغط (حوالي 10 ميجا بايت في الثانية علي معالج بنتيوم 133)

فقط عليك تنفيذ اﻷمر

upx <your executable file with path>

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

مزيد من التفاصيل عن أستخدام UPX تجدها في Size Matters

من المهم أيضا أن تلاحظ أن برنامج "مرحبا بالعالم " في Lazarus يحتوي علي مزايا كثيرة .فهو يتضمن :

لذا لزم أن يكون كبير الحجم ولكنه بذلك يحتوي علي كل شئ بحتاجه أي برنامج حقيقي لكي يعمل .

حجم الملف التنفيذي الناتج من lazarus يبدأ كبير , ولكنه ينمو ببطء شديد وذلك بسبب مفسر free pascal والطريقة اللتي تعمل بها فورمات lazarus .

علي سبيل المثال لو نظرنا إلي تطبيق مكتوب بـ C++ يبدأ ضغير جدا في برنامج "مرحبا بالعالم " ولكنه يبدأ بالنمو بشكل سريع عندما تبدأ في إضافة خواص متقدمة له .

<figure> <img src="Lazarus_vs_cpp.png" title="Lazarus_vs_cpp.png" /> <figcaption>Lazarus_vs_cpp.png</figcaption> </figure>

دليل سريع لكيفية تقليص حجم تطبيق Lazarus/FPC (أختبر علي اﻷصدار 0.926 من Lazarus)

Strip Symbols From Executable (-Xs) -> Checked

وعلي ما يبدو أن أهم عنصر في الخطوات السابقة هو رقم 2 .لتطبيق بسيط يصبح الحجم من 1 الي 3 ميجا بدلا من 15 -20 ميجا . هنا يمكنك أيضا تجربة

Project|Compiler Options|Code|Optimizations|smaller rather than faster -> Checked

(ولكن أحذر فهذا قد يقلل اﻵداء)

Chart of default sizes for an empty Application with various settings and operating systems

Well I ran tests I did on Lazarus 0.9.29 with FPC 2.4 (FPC 2.2.4 with Windows). Optimized compiler mean using the advices above but without using UPX. Default Lazarus means as installed from package/setup. LCL without debug informations mean after rebuilding Lazarus IDE and LCL without debug informations (-g-).

<TABLE WIDTH=642 BORDER=0 CELLPADDING=1 CELLSPACING=0>

<TR VALIGN=TOP>

<TD WIDTH=263>

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

Default Lazarus

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

LCL without debug informations

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

<U>Ubuntu 64 bits / Lazarus 64 bits</U>

</TD>

<TD COLSPAN=4 WIDTH=372>

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

Default application

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

13,4  Mb

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

7,5 Mb / 8

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

Optimized compiler

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

4,4 Mb

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

2,70 Mb (0.29svn FPC2.4 2,5)

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

   

</TD>

<TD COLSPAN=4 WIDTH=372>

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

<U>Ubuntu 32 bits / Lazarus 32 bits</U>

</TD>

<TD COLSPAN=4 WIDTH=372>

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

Default application

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

19,6  Mb

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

5,7 Mb

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

Optimized compiler

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

2,9 Mb

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

1,6 Mb

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

   

</TD>

<TD COLSPAN=4 WIDTH=372>

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

<U>Windows XP 32 bits / Lazarus 32 bits</U>

</TD>

<TD COLSPAN=4 WIDTH=372>

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

Default application

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

11,8 Mb

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

2,14 Mb

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

Optimized compiler

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

1,62 Mb

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

1,50 Mb

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

   

</TD>

<TD COLSPAN=4 WIDTH=372>

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

<U>Windows Seven 64 bits / Lazarus 64 bits</U>

</TD>

<TD COLSPAN=4 WIDTH=372>

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

Default application

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

12,3  Mb

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

3,20 Mb

</TD>

</TR>

<TR VALIGN=TOP>

<TD WIDTH=263>

Optimized compiler

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=111>

2,14 Mb

</TD>

<TD WIDTH=14>

   

</TD>

<TD WIDTH=220>

2,16 Mb

</TD>

</TR>

</TABLE>

</div>


From the Free Pascal wiki, page "Lazarus Faq/ar", as it stood on 2015-06-06 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.