هل النظام الآخر كذلك لينكس؟
هل قمت بنقل جميع الملفات المطلوبة؟
هل جربت تشغيل التطبيق من سطر الاوامر؟ غالبا سيعطي رسائل الاخطاء هناك[quote=“ahmad, post:1, topic:375”]
هل يوجد طريقة لجعل التطبيق معه ليبراري بجانبه يعمل عن طريقهم ؟
[/quote]
نعم ذلك ممكن، فالتطبيق عندما ينفذ يبحث اولا عن المكتبات في نفس مسار الملف التنفيذي فان لم يجدها بحث عنها في مواقع المكتبات الافتراضية للنظام.
قم باستخدام امر ldd لمعرفة المكتبات التي يحتاجها تطبيقك
قمت بتجربة كلامك انه يبحث عن المكتبات في مجلد التطبيق نقلت المكتبات عليه وقمت بالفحص فلم يتعرف عليهم , فنقلت المكتبات الى /usr/lib/ فطلب مكتبات جديدة ايضا نقلتهم فطلب غيرهم جدد , حجم التطبيق 100 كيلو اصبح حجمه مع المكتبات 40 ميغا ! هذا ولم احصر المكتبات كلها
تطبيقك بحجم 100 كيلو لانه لايحمل السطور البرمجية الخاصة بكيفة رسم الواجهة الرسومية والازرار والنوافذ …الخ ولا مكتبات التعامل مع النظام او المستخدم…الخ
فجميع التطبيقات تحتاج المكتبات المساعدة لها والتي توفر تلك الخصائص او البديل هو ان تكتب تطبيقك من الصفر بلغة C مثلا وتكتب به جميع التفاصيل من الالف الى الياء.
فعند كتابة تطبيقك للوندوز بلغة Visual C فستحتاج الى المكتبات الخاصة بواجة الوندوز الرسومية به وهي تاتي مدمجة مع اصدارات الوندوز. ولو كتبت تطبيق لقينوم مثلا فستحتاج مكتبات Gtk لانها هي التي تستخدم في قينوم لرسم الواجهة الرسومية.
بينما لو جربت تطبيقك على كدي فغالبا سيعمل بدون مكتبات، لان كدي مبنية بكيوت Qt ولذلك المكتبات مرفقة مسبقا.
و نفس المشكلة ستواجهك عند عمل تطبيق بمكتبات Gtk ومحاول تشغيلة على نظام لا يحتوي تلك الملفات
الذي يميز Qt عن Gtk وغيرها ان لها مكتبات على جميع الأنظمة المشهورة مثل لينكس ووندوز وماك وحتى على الاندرويد. لذلك تستطيع تشغيل تطبيقك على اي من هذه المنصات بدون تعديل في النص (بعد عمل compile لكل منصة طبعا).
الم تلاحظ انك عندما تستخدم واجهة مثل قينوم وتحاول تركيب تطبيق صغير من كدي انه يطلب مكتبات اعتمادية كثيرة؟ وكذلك نفس الشي عندما تكون واجهتك كدي وتحاول تركيب تطبيق خاص بقنوم. حيث يقوم نظام الحزم بتركيب الحزم الاعتمادية التي يحتاجها ذلك التطبيق ان لم تكن مثبته مسبقا.
ابحث عن طريقة تكوين وتجميع المكتبات التي يحتاجها تطبيقك او اجعلها كاعتمادية واطلب من المستخدم تثبيت الحزم الازم من مستودعات توزيعيته وهذه هي الطريقه الاصح لانه يستمكن من تحديث تلك المكتبات في المستقبل دون الحاجة لاعادة تحميل تطبيقك
تحتاج الى بناء التطبيق ك static حيث يقوم برنامج الربط بدمج المكتبات مع التطبيق، وهذا بعكس الافتراضي وهو ربط dynamic.
الطريقة ليست بالسهلة وتحتاج المام بالمكتبات المطلوبة وطريقة استخدام qmake وانا شخصيا اجهل طريقتها.
لكن بامكانك التعلم من ملفات الاعدادات لتطبيق التيليقرام فهو مفتوح المصدر والبحث في الإنترنت عن qt static linking