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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

هذه مشكلة ,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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