Мое решение:
- Копировать
mkspecs/linux-g++
в mkspecs/linux-g++-<my arch>
- Измените
mkspecs/linux-g++/qmake.conf
, как в примере ниже. Прочитайте комментарии в файле примера для уточнения
- Мне не нужно было изменять
qplatformdefs.h
, хотя вы могли бы для вашей архитектуры
- Запуск скрипта configure с параметрами, указанными в вопросе, работал вместе с
make
и make install
- Теперь вы можете скомпилировать свой код для вашего кросс-скомпилированного Qt X11.
moc
, uic
и т. Д. Были скомпилированы для вашего хоста, поэтому они будут генерировать соответствующий код.
- Чтобы запустить ваше программное обеспечение с кросс-скомпилированными библиотеками Qt, просто скопируйте
/libs
из того места, где вы устанавливаете Qt, в папку ваших целей lib
, или вы можете поместить его в другую папку и настроить LD_LIBRARY_PATH на включение Qt lib
папка.
Пример 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)
UPDATE:
Это решение будет работать для "автономной" компиляции. Если вам нужно собрать Qt X11 для Angstrom, OpenEmbedded, Android, OpenWRT и т. Д., Вам придется использовать соответствующие системы сборки для правильной компиляции. Например, для целей OpenEmbedded (т. Е. Angstrom) вам придется написать рецепт BitBake.
Эта проблема возникла из-за необходимости поддержки устаревших систем. Использование Embedded Qt не было вариантом. Для новых проектов я настоятельно рекомендую использовать Embedded Qt.