Сборка qt 4.8.6 для bbb (linaro4.9) без поддержки dbus рассмотрено здесь. На бигл боне работает ядро 4.1.0, в котором используется следующая версия dbus:
root@arm:~# dbus-daemon --version
D-Bus Message Bus Daemon 1.8.16
2. Скачаем исходники dbus 1.8.16 отсюда, распакуем в локальную папку (/mnt/Data/Libraries/bbb/dbus-1.8.16).
Для сборки под Fedora30 нужны хедеры пакета libsystemd-dev:
sudo yum install systemd-devel
Переходим, собираем:
cd /mnt/Data/Libraries/bbb/dbus-1.8.16
make distclean
export CC=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-gcc
export CXX=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++
export CPPFLAGS='-I/usr/local/tools/expat-2.2.9/include'
root@arm:~# dbus-daemon --version
D-Bus Message Bus Daemon 1.8.16
1. Скачиваем последние исходники expat (сейчас это 2.2.9), распаковываем в локальную папку (/mnt/Data/Libraries/bbb/expat-2.2.9), переходим в неё, собираем:
cd /mnt/Data/Libraries/bbb/expat-2.2.9
cd /mnt/Data/Libraries/bbb/expat-2.2.9
export CC=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-gcc
export CXX=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++
export CXX=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++
./configure --host=arm-linux --prefix=/usr/local/tools/expat-2.2.9
make
sudo make install
2. Скачаем исходники dbus 1.8.16 отсюда, распакуем в локальную папку (/mnt/Data/Libraries/bbb/dbus-1.8.16).
Для сборки под Fedora30 нужны хедеры пакета libsystemd-dev:
sudo yum install systemd-devel
Переходим, собираем:
cd /mnt/Data/Libraries/bbb/dbus-1.8.16
make distclean
export CC=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-gcc
export CXX=/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++
export CPPFLAGS='-I/usr/local/tools/expat-2.2.9/include'
export CFLAGS='-I/usr/local/tools/expat-2.2.9/include'
export LDFLAGS='-L/usr/local/tools/expat-2.2.9/lib'
Скачиваем версию qt 4.8.6 отсюда и распаковываем в определенную папку для сборки (у меня папка /mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus) и копируем в неё содержимое архива с помощью mc, скопируем созданную ранее папку linux-arm-linaro-g++ в новую папку /mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/mkspecs/qws/linux-arm-linaro-g++ :
Собираем qt 4.8.6:
cd /mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus
./autogen.sh --includedir=/usr/include --host=arm-linux --enable-abstract-sockets -with-xml=expat
./configure --prefix=/usr/local/tools/dbus-1.8.16 --host=arm-linux --with-x=no --enable-abstract-sockets -with-xml=expat
make
Ошибка при вызове make на Fedora30:
CC libdbus_internal_la-dbus-userdb-util.lo
dbus-userdb-util.c:33:30: fatal error: systemd/sd-login.h: No such file or directory
#include <systemd/sd-login.h>
^
3. Создадим заново папку для qt 4.8.6 с поддержкой dbus.
./configure --prefix=/usr/local/tools/dbus-1.8.16 --host=arm-linux --with-x=no --enable-abstract-sockets -with-xml=expat
make
Ошибка при вызове make на Fedora30:
CC libdbus_internal_la-dbus-userdb-util.lo
dbus-userdb-util.c:33:30: fatal error: systemd/sd-login.h: No such file or directory
#include <systemd/sd-login.h>
^
Собираем qt 4.8.6:
cd /mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus
make confclean
export CPPFLAGS='-I/usr/include/ -I/usr/local/tools/expat-2.2.9/include -I/usr/local/tools/dbus-1.8.16/include'
export CFLAGS='-I/usr/include/ -I/usr/local/tools/expat-2.2.9/include -I/usr/local/tools/dbus-1.8.16/include'
export LDFLAGS='-L/usr/local/tools/expat-2.2.9/lib -L/usr/local/tools/dbus-1.8.16/lib'
./configure -v -embedded arm -platform qws/linux-x86_64-g++ -xplatform qws/linux-arm-linaro-g++ -prefix /usr/local/tools/qt_4.8.6_linaro4.9_dbus -little-endian -qt-gfx-transformed -static -confirm-license -opensource -no-accessibility -no-largefile -fast -no-phonon -no-phonon-backend -qt-zlib -no-qt3support -no-openssl -no-webkit -qt-sql-sqlite -dbus -nomake demos -nomake examples -nomake docs
Ошибка при вызове ./configure на Fedora30:
/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++ -c -o project.o -pipe -m64 -DQMAKE_OPENSOURCE_EDITION -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -Igenerators/integrity -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/include -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/include/QtCore -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/src/corelib/global -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/src/corelib/xml -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/tools/shared -DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/mkspecs/qws/linux-x86_64-g++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED project.cpp
arm-linux-gnueabihf-g++: error: unrecognized command line option '-m64'
При сборке проекта с использованием тулчейна linaro(/usr/local/tools/linaro-4.9) и qt-4.8.6 (/usr/local/tools/qt_4.8.6_linaro4.9) у меня возникает ошибка: компилятор не находит заголовочный файл <QtDesigner/QDesignerCustomWidgetInterface>. Это произошло потому, что операция sudo make install не перекинула файлы дизайнера в установочную папку, надо сделать это за неё. Переписываем папки:
1) /media/Data/Libraries/bbb/qt_4.8.6_linaro4.9/include/QtDesigner -> /usr/local/tools/qt_4.8.6_linaro4.9/include/QtDesigner
2) /media/Data/Libraries/bbb/qt_4.8.6_linaro4.9/tools/designer -> /usr/local/tools/qt_4.8.6_linaro4.9/tools/designer
Источники:
Ошибка при вызове ./configure на Fedora30:
/usr/local/tools/linaro-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++ -c -o project.o -pipe -m64 -DQMAKE_OPENSOURCE_EDITION -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -Igenerators/integrity -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/include -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/include/QtCore -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/src/corelib/global -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/src/corelib/xml -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/tools/shared -DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/mnt/Data/Libraries/bbb/qt_4.8.6_linaro4.9_dbus/mkspecs/qws/linux-x86_64-g++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED project.cpp
arm-linux-gnueabihf-g++: error: unrecognized command line option '-m64'
При сборке проекта с использованием тулчейна linaro(/usr/local/tools/linaro-4.9) и qt-4.8.6 (/usr/local/tools/qt_4.8.6_linaro4.9) у меня возникает ошибка: компилятор не находит заголовочный файл <QtDesigner/QDesignerCustomWidgetInterface>. Это произошло потому, что операция sudo make install не перекинула файлы дизайнера в установочную папку, надо сделать это за неё. Переписываем папки:
1) /media/Data/Libraries/bbb/qt_4.8.6_linaro4.9/include/QtDesigner -> /usr/local/tools/qt_4.8.6_linaro4.9/include/QtDesigner
2) /media/Data/Libraries/bbb/qt_4.8.6_linaro4.9/tools/designer -> /usr/local/tools/qt_4.8.6_linaro4.9/tools/designer
Источники:
1) https://mfcoding.wordpress.com/2012/12/12/qt-qt-embedded-with-dbus/
2) https://dbus.freedesktop.org/doc/dbus-daemon.1.html
3) https://vt-tech.eu/articles/linux/100-cross-libdbus.html
4) https://stackoverflow.com/questions/4331420/cross-compiler-d-bus
5) https://stackoverflow.com/questions/30519454/i-cant-configure-dbus-due-to-expat
6) https://vt-tech.eu/en/articles/programming/2-crosscompile-qt-5-2-1-for-the-beaglebone-black
7) https://fedoraproject.org/wiki/Packaging:Systemd
8) https://stackoverflow.com/questions/16710047/usr-bin-ld-cannot-find-lnameofthelibrary
9) https://www.qtcentre.org/threads/33379-dbus.cpp-%28.text-0x8%29-undefined-reference-to-dbus_shutdown
2) https://dbus.freedesktop.org/doc/dbus-daemon.1.html
3) https://vt-tech.eu/articles/linux/100-cross-libdbus.html
4) https://stackoverflow.com/questions/4331420/cross-compiler-d-bus
5) https://stackoverflow.com/questions/30519454/i-cant-configure-dbus-due-to-expat
6) https://vt-tech.eu/en/articles/programming/2-crosscompile-qt-5-2-1-for-the-beaglebone-black
7) https://fedoraproject.org/wiki/Packaging:Systemd
8) https://stackoverflow.com/questions/16710047/usr-bin-ld-cannot-find-lnameofthelibrary
9) https://www.qtcentre.org/threads/33379-dbus.cpp-%28.text-0x8%29-undefined-reference-to-dbus_shutdown