كيف تتجاوز QT X11 لـ PowerPC؟
-
28-09-2019 - |
سؤال
لقد كنت أحاول الحصول على QT X11 Cross المترجمة لـ PowerPC لفترة من الوقت الآن واستمرت في مواجهة مشاكل مختلفة.
من المعلومات الممنوحة لدعم QT الخاص بي ، كل ما يحتاج المرء فعله هو:
- إنشاء mkspec جديد
- نسخ دليل موجود في
mkspec/
لقد استخدمت Linux-G ++ وتعديلها. - تعديل Qmake.conf لاستخدام مجموعة الأدوات والمكتبات وتشمل
قم بتشغيل الأمر التالي التكوين:
./configure -arch <your arch> -xplatform <your mkspec> -prefix <where you want Qt installed> <other options>
بعد الانتهاء من التكوين ، قم بتشغيل
make
ومن بعدmake install
. ستجد QT مثبتة في الدليل الذي حددته في-prefix
اختيار.
كان لديه كل أنواع المشاكل في القيام بذلك.
المحلول
بلدي الحل:
- ينسخ
mkspecs/linux-g++
إلىmkspecs/linux-g++-<my arch>
- تعديل
mkspecs/linux-g++/qmake.conf
كما في المثال أدناه. اقرأ التعليقات في ملف المثال للحصول على تفاصيل - لم يكن علي تعديل
qplatformdefs.h
, ، على الرغم من أنك قد تكون لهندسة المعمارية الخاصة بك - تشغيل البرنامج النصي تكوين مع الخيارات في السؤال الذي عمل مع
make
وmake install
- يمكنك الآن تجميع الكود الخاص بك مقابل QT X11 المتقاطع.
moc
,uic
, ، إلخ. تم تجميعها لمضيفك ، لذلك سوف يقومون بإنشاء رمز وفقًا لذلك. - لتشغيل برنامجك باستخدام QT libs المتقاطع ، فقط انسخ
/libs
من حيث تقوم بتثبيت QT على أهدافكlib
المجلد أو يمكنك وضعه في مجلد آخر وتعيين ld_library_path لتضمين QTlib
مجلد.
مثال qmake.conf:
# # qmake configuration for linux-g++-ppc_74xx # MAKEFILE_GENERATOR = UNIX TEMPLATE = app CONFIG += qt warn_on release incremental link_prl QT += core gui QMAKE_INCREMENTAL_STYLE = sublib include(../common/g++.conf) include(../common/linux.conf) # # Modifications to g++.conf # # my_arch-g++ is the full executable path of your g++, make sure your PATH # contains the directory for your toolchain # QMAKE_CC = my_arch-g++ QMAKE_CXX = my_arch-g++ QMAKE_LINK = my_arch-g++ QMAKE_LINK_SHLIB = my_arch-g++ # # I had to provide includes and libraries for packages my toolchain does not # provide this is mostly X11 and glib stuff. You'll either have to # cross-compile it yourself or get it from your distribution # QMAKE_CFLAGS = -I/path/to/your/includes \ -L/path/to/your/libs QMAKE_CXXFLAGS = $$QMAKE_CFLAGS # # Modifications to linux.conf # # Same as g++ stuff above # QMAKE_AR = my_arch-ar cqs QMAKE_OBJCOPY = my_arch-objcopy QMAKE_STRIP = my_arch-strip # # I had all kinds of problems linking Qt source with X11 depending on how I # specified the include paths. My toolchain provided most X11 functionality # and I just had to add missing parts in the CXXFLAGS and CFLAGS, # but specifying exactly where to find X11 includes and libraries specific # to my toolchain fixed some of the issues I experienced # QMAKE_INCDIR_X11 = /path/to/your/toolchain/includes QMAKE_LIBDIR_X11 = /path/to/your/toolchain/libs load(qt_config)
تحديث:
سيعمل هذا الحل لتجميع "مستقل". إذا كنت بحاجة إلى إنشاء QT X11 لـ Angstrom و OpenEmbedded و Android و OpenWrt ، وما إلى ذلك ، فسيتعين عليك استخدام أنظمة الإنشاء الخاصة بها للتجميع المناسب. على سبيل المثال ، بالنسبة للأهداف المفتوحة (أي Angstrom) ، سيتعين عليك كتابة وصفة bitbake.
حدثت هذه المشكلة بسبب الحاجة إلى دعم الأنظمة القديمة. باستخدام QT المضمن لم يكن خيارًا. بالنسبة للمشاريع الجديدة ، أوصي بشدة باستخدام QT المضمن.