четверг, 2 июля 2015 г.

Сборка Qt 4.8.3 для платы Beagle Bone Black (linaro5.3)

Собирать Qt для BeagleBone Black будем на ОС Ubuntu 16.04 amd64 с установленной системой кросскомпиляции Linaro Linux x86_64 (установка).

Скачиваем версию qt 4.8.3 отсюда и распаковываем в определенную папку для сборки (у меня папка /media/Data/Libraries/bbb/qt_4.8.3_linaro5.3), создаем папку (sudo mkdir -p /media/Data/Libraries/bbb/qt_4.8.3_linaro5.3) и копируем в неё содержимое архива с помощью mc.

В проекте нет стандартных настроек для системы кросскомпиляции Linaro, поэтому надо будет создать файлы настроек. Переходим в папку mkspecs/qws, создаем папку и копируем файлы настроек:

cd /media/Data/Libraries/bbb/qt_4.8.3_linaro5.3/mkspecs/qws
mkdir linux-arm-linaro-g++
cp linux-arm-g++/qmake.conf ./linux-arm-linaro-g++
cp linux-arm-g++/qplatformdefs.h ./linux-arm-linaro-g++


Редактируем файл настроек nano ./linux-arm-linaro-g++/qmake.conf в соответствии с используемым средством кросскомпиляции /usr/local/tools/linaro-5.3 :

#
# qmake configuration for building with linux-arm-linaro-g++
#

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)

#Compiler Flags to take advantage of the ARM architecture

QMAKE_CFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc
QMAKE_CXX               = arm-linux-gnueabihf-g++
QMAKE_LINK              = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_STRIP             = arm-linux-gnueabihf-strip

load(qt_config)

Собираем qt 4.8.3:

cd /media/Data/Libraries/bbb/qt_4.8.3_linaro5.3

make confclean


./configure -v -embedded arm -platform qws/linux-x86_64-g++ -xplatform qws/linux-arm-linaro-g++ -prefix /usr/local/tools/qt_4.8.3_linaro5.3 -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-qdbus -no-webkit -qt-sql-sqlite -nomake demos -nomake examples -nomake docs

make

sudo make install

Для 32-битной убунты актуальны все те же шаги, за исключением того, что в configure параметр platform надо указать следующий -platform qws/linux-x86-g++. Строка configure будет выглядеть следующим образом:

./configure -v -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-arm-linaro-g++ -prefix /usr/local/tools/qt_4.8.3_linaro5.3 -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-qdbus -no-webkit -qt-sql-sqlite -nomake demos -nomake examples -nomake docs

При сборке проекта с использованием тулчейна linaro(/usr/local/tools/linaro-5.3) и qt-4.8.3-linaro5.3 (/usr/local/tools/qt_4.8.3_linaro5.3) у меня возникает ошибка: компилятор не находит заголовочный файл <QtDesigner/QDesignerCustomWidgetInterface>. Это произошло потому, что операция sudo make install не перекинула файлы дизайнера в установочную папку, надо сделать это за неё. Переписываем:
1)/media/Data/Libraries/bbb/qt_4.8.3_linaro5.3/include/QtDesigner -> /usr/local/tools/qt_4.8.3_linaro5.3/include/QtDesigner. 
И всё корректно собирается.

Использованные статьи:
1) https://chaitramohankumar.wordpress.com/2014/08/13/building-qt4-8-6-for-embedded-linux/
2) http://armsdr.blogspot.ru/2014/01/bare-metal-qt-52-on-beaglebone-black_10.html

Комментариев нет:

Отправить комментарий