# مشكلة عدم عمل برنامج مبرمج qt على انظمة اخرى

**URL:** <https://discourse.aosus.org/t/topic/375>\
**Category:** الدعم وحلول مشاكل المستخدم\
**Tags:** qt\
**Created:** [17 فبراير 2016، 3:27م UTC](https://discourse.aosus.org/t/topic/375 "2016-02-17T15:27:09Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![ahmad](https://discourse.aosus.org/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@ahmad](https://discourse.aosus.org/u/ahmad)\
**Post date:** [17 فبراير 2016، 3:27م UTC](https://discourse.aosus.org/t/topic/375/1 "2016-02-17T15:27:10Z")

</div>

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

قمت بعمل برنامج عن طريق QT على لينكس  
البرنامج يعمل عندي طبيعي لكن اذا اردت تشغيله على جهاز اخر لا يعمل ولا حتى يعطي اي رسالة

جربت على نظامين 86 و 64 ولم يعمل التطبيق

حاولت نقل مكتبات QT التي يستخدمها التطبيق و تبدأ بحرف Q للنظام الاخر لكن ايضا لم يعمل التطبيق  
فما هي المشكلة برايكم اخواني بارك الله بكم ؟

ملاحظة اذا قمت بتثبيت qtcreator سيعمل التطبيق طبيعي  
لكن ايعقل ان اطلب من المستخدك ان يقوم بتثبيته ليعمل التطبيق !!!

هل يوجد طريقة لجعل التطبيق معه ليبراري بجانبه يعمل عن طريقهم ؟

---

<div class="post-metadata">

**Author:** ![fahad](https://discourse.aosus.org/user_avatar/discourse.aosus.org/fahad/32/206_2.png) [@fahad](https://discourse.aosus.org/u/fahad)\
**Post date:** [17 فبراير 2016، 4:34م UTC](https://discourse.aosus.org/t/topic/375/2 "2016-02-17T16:34:12Z")

</div>

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

> [@ahmad](#):
>
> حاولت نقل مكتبات QT التي يستخدمها التطبيق و تبدأ بحرف Q للنظام الاخر

هل النظام الآخر كذلك لينكس؟  
هل قمت بنقل جميع الملفات المطلوبة؟

هل جربت تشغيل التطبيق من سطر الاوامر؟ غالبا سيعطي رسائل الاخطاء هناك[quote=“ahmad, post:1, topic:375”]  
هل يوجد طريقة لجعل التطبيق معه ليبراري بجانبه يعمل عن طريقهم ؟  
[/quote]

نعم ذلك ممكن، فالتطبيق عندما ينفذ يبحث اولا عن المكتبات في نفس مسار الملف التنفيذي فان لم يجدها بحث عنها في مواقع المكتبات الافتراضية للنظام.

قم باستخدام امر `ldd` لمعرفة المكتبات التي يحتاجها تطبيقك

```markdown
$ ldd <اسم_التطبيق>

```

---

<div class="post-metadata">

**Author:** ![ahmad](https://discourse.aosus.org/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@ahmad](https://discourse.aosus.org/u/ahmad)\
**Post date:** [17 فبراير 2016، 9:11م UTC](https://discourse.aosus.org/t/topic/375/3 "2016-02-17T21:11:46Z")

</div>

نعم اخي قمت بتنفيذ امر ldd وسحبت المكتبات التي يطلبها ووضعتها بجانب التطبيق و لم يعمل

حتى اني اضفت كلمة LIBS على ملف .pro لكن لم ينجح ربما قد قمت بها خطأ

وبشأن النظام نعم النظام لينكس اكيد

---

<div class="post-metadata">

**Author:** ![ahmad](https://discourse.aosus.org/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@ahmad](https://discourse.aosus.org/u/ahmad)\
**Post date:** [18 فبراير 2016، 10:23ص UTC](https://discourse.aosus.org/t/topic/375/4 "2016-02-18T10:23:27Z")

</div>

قمت بتجربة كلامك انه يبحث عن المكتبات في مجلد التطبيق نقلت المكتبات عليه وقمت بالفحص فلم يتعرف عليهم , فنقلت المكتبات الى /usr/lib/ فطلب مكتبات جديدة ايضا نقلتهم فطلب غيرهم جدد , حجم التطبيق 100 كيلو اصبح حجمه مع المكتبات 40 ميغا ! هذا ولم احصر المكتبات كلها

هذه مشكلة ,

---

<div class="post-metadata">

**Author:** ![fahad](https://discourse.aosus.org/user_avatar/discourse.aosus.org/fahad/32/206_2.png) [@fahad](https://discourse.aosus.org/u/fahad)\
**Post date:** [18 فبراير 2016، 3:08م UTC](https://discourse.aosus.org/t/topic/375/5 "2016-02-18T15:08:29Z")

</div>

هذه ليست مشكلة، انما هذه طبيعة عمل التطبيقات.

تطبيقك بحجم 100 كيلو لانه لايحمل السطور البرمجية الخاصة بكيفة رسم الواجهة الرسومية والازرار والنوافذ …الخ ولا مكتبات التعامل مع النظام او المستخدم…الخ

فجميع التطبيقات تحتاج المكتبات المساعدة لها والتي توفر تلك الخصائص او البديل هو ان تكتب تطبيقك من الصفر بلغة C مثلا وتكتب به جميع التفاصيل من الالف الى الياء.

فعند كتابة تطبيقك للوندوز بلغة Visual C فستحتاج الى المكتبات الخاصة بواجة الوندوز الرسومية به وهي تاتي مدمجة مع اصدارات الوندوز. ولو كتبت تطبيق لقينوم مثلا فستحتاج مكتبات Gtk لانها هي التي تستخدم في قينوم لرسم الواجهة الرسومية.

بينما لو جربت تطبيقك على كدي فغالبا سيعمل بدون مكتبات، لان كدي مبنية بكيوت Qt ولذلك المكتبات مرفقة مسبقا.  
و نفس المشكلة ستواجهك عند عمل تطبيق بمكتبات Gtk ومحاول تشغيلة على نظام لا يحتوي تلك الملفات

الذي يميز Qt عن Gtk وغيرها ان لها مكتبات على جميع الأنظمة المشهورة مثل لينكس ووندوز وماك وحتى على الاندرويد. لذلك تستطيع تشغيل تطبيقك على اي من هذه المنصات بدون تعديل في النص (بعد عمل compile لكل منصة طبعا).

الم تلاحظ انك عندما تستخدم واجهة مثل قينوم وتحاول تركيب تطبيق صغير من كدي انه يطلب مكتبات اعتمادية كثيرة؟ وكذلك نفس الشي عندما تكون واجهتك كدي وتحاول تركيب تطبيق خاص بقنوم. حيث يقوم نظام الحزم بتركيب الحزم الاعتمادية التي يحتاجها ذلك التطبيق ان لم تكن مثبته مسبقا.

ابحث عن طريقة تكوين وتجميع المكتبات التي يحتاجها تطبيقك او اجعلها كاعتمادية واطلب من المستخدم تثبيت الحزم الازم من مستودعات توزيعيته وهذه هي الطريقه الاصح لانه يستمكن من تحديث تلك المكتبات في المستقبل دون الحاجة لاعادة تحميل تطبيقك

---

<div class="post-metadata">

**Author:** ![ahmad](https://discourse.aosus.org/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@ahmad](https://discourse.aosus.org/u/ahmad)\
**Post date:** [18 فبراير 2016، 3:18م UTC](https://discourse.aosus.org/t/topic/375/6 "2016-02-18T15:18:56Z")

</div>

بارك الله بك يا غالي على التوضيح

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

---

<div class="post-metadata">

**Author:** ![ahmad](https://discourse.aosus.org/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@ahmad](https://discourse.aosus.org/u/ahmad)\
**Post date:** [29 فبراير 2016، 6:37م UTC](https://discourse.aosus.org/t/topic/375/7 "2016-02-29T18:37:25Z")

</div>

اخي فهد الله يرضى هل يوجد طريقة معينة لدمج المكتبات مع التطبيق ؟

مثلا تطبيق تلغرام هو عبارة عن ملف واحد ولا يحتاج لتثبيت مكتبات

---

<div class="post-metadata">

**Author:** ![fahad](https://discourse.aosus.org/user_avatar/discourse.aosus.org/fahad/32/206_2.png) [@fahad](https://discourse.aosus.org/u/fahad)\
**Post date:** [29 فبراير 2016، 8:47م UTC](https://discourse.aosus.org/t/topic/375/8 "2016-02-29T20:47:11Z")

</div>

تحتاج الى بناء التطبيق ك static حيث يقوم برنامج الربط بدمج المكتبات مع التطبيق، وهذا بعكس الافتراضي وهو ربط dynamic.

الطريقة ليست بالسهلة وتحتاج المام بالمكتبات المطلوبة وطريقة استخدام qmake وانا شخصيا اجهل طريقتها.  
لكن بامكانك التعلم من ملفات الاعدادات لتطبيق التيليقرام فهو مفتوح المصدر والبحث في الإنترنت عن qt static linking

---

<div class="post-metadata">

**Author:** ![ahmad](https://discourse.aosus.org/letter_avatar_proxy/v4/letter/a/a4c791/32.png) [@ahmad](https://discourse.aosus.org/u/ahmad)\
**Post date:** [1 مارس 2016، 8:39ص UTC](https://discourse.aosus.org/t/topic/375/9 "2016-03-01T08:39:50Z")

</div>

بارك الله بك يا غالي كفيت ووفيت
