Мне необходимо собрать проект, написанный под Qt 4.8.3, для выполнения на custom-плате под управлением микроконтроллера Digi Connect Core 9M 2443. Средства разработки и кросскомпиляции будем ставить на ОС Ubuntu 10.04 (host), так как стандартная библиотека С++ этой версии совместима с библиотекой, используемой в ELDK. Ubuntu 10.04 - самая старшая версия Ubuntu, официально поддерживаемая ELDK, согласно документации.
Версия Ubuntu 10.04 уже не поддерживается, но старые пакеты можно скачать из резервного репозитория. Меняем в файле /etc/apt/sources.list строчку http://ru.archive.ubuntu.com/ubuntu/ на http://old-releases.ubuntu.com/ubuntu.
Для сборки qt надо установить пакет g++:
sudo apt-get install g++
У меня на компе установлена Ubuntu 16.04 amd64. Я устанавливаю virtualbox (sudo apt-get install virtualbox), создаю новую машину со стандартными настройками под 32-битный linux, скачиваю 32-битный iso'шник, примонтирую его в виде оптического диска и устанавливаю с него Ubuntu 10.04 x86 на виртуальную машину (подробнее).
1. Для сборки используются инструменты ELDK (Embedded Linux Development Kit) http://www.denx.de/wiki/DULG/ELDK. Я устанавливаю старую версию 4.2 (ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/eldk/4.2/arm-linux-x86/iso/arm-2008-11-24.iso). В новых версиях ELDK, начиная с 5.0, изменилась система наименований, iso'шники сгруппированны по архитектуре ARM. В плате используется микропроцессор S3C2443 фирмы Sumsung ARM9. Группа микропроцессоров ARM9 может соответствовать либо архитектуре ARMv4T, либо ARMv5TE, либо ARMv5TEJ. Для последней доступной версии ELDK 5.3, по моему мнению, стоит остановиться на версии armv4t (ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/eldk/5.3/iso/eldk-5.3-armv4t.iso), но я ее не проверял.
Я скачал файл на хост-машину и перекинул в общую папку /media/Data/Exchange, которая соответствует папке /media/Exchange гостевой ОС. Переходим в неё (/media/Exchange), создаем папку для монтирования (/mnt/iso) и монтируем исошник:
cd /media/Exchange
sudo mkdir /mnt/iso
sudo mount -o loop -o exec ./arm-2008-11-24.iso /mnt/iso
Переходим в директорию и запускаем установку в папку /usr/local/tools/eldk:
cd /mnt/iso
sudo ./install -d /usr/local/tools/eldk
Добавляем путь к бинарникам в общий путь поиска системы. Редактируем файл ~/.bashrc:
sudo nano ~/.bashrc
Добавляем в конец строку:
export PATH=$PATH:/usr/local/tools/eldk/usr/bin
После перезапуска терминала и инициализации его из обновленного скрипта ~/.bashrc вывод команды echo $PATH должен включать /usr/local/tools/eldk/usr/bin.
2. Кросскомпиляция Qt 4.8.3 производится на гостевой ОС Ubuntu 10.04 x86. Скачиваем версию qt 4.8.3 отсюда под хост-машиной, распаковываем в папку для сборки /media/Data/Exchange/qt_4.8.3_arm.
В проекте нет стандартных настроек для системы кросскомпиляции ELDK, поэтому надо будет создать файлы настроек. Переходим в папку mkspecs/qws, создаем папку и копируем файлы настроек:
cd /media/Data/Exchange/qt_4.8.3_arm/mkspecs/qws
mkdir linux-arm-eldk-g++
cp linux-arm-g++/qmake.conf ./linux-arm-eldk-g++
cp linux-arm-g++/qplatformdefs.h ./linux-arm-eldk-g++
Редактируем файл настроек nano ./linux-arm-eldk-g++/qmake.conf в соответствии с используемым средством кросскомпиляции /usr/local/tools/eldk:
#
# qmake configuration for building with linux-arm-eldk-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 = -O0 -march=armv4t -mtune=arm920t -pipe
QMAKE_CXXFLAGS_RELEASE = -O0 -march=armv4t -mtune=arm920t -pipe
# modifications to g++.conf
QMAKE_CC = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-gcc
QMAKE_CXX = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++
QMAKE_LINK = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-objcopy
QMAKE_STRIP = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-strip
load(qt_config)
Мы прописали полный путь к кроссинструментам (например, /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-gcc вместо просто arm-linux-gnueabi-gcc ) потому, что версия QtCreator 1.3.1, которая идет в этой версии Ubuntu, почему-то не считывает путь поиска из переменной $PATH.
Собираем qt 4.8.3:
cd /media/Data/Libraries/bbb/qt_4.8.3_arm
./configure -v -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-arm-eldk-g++ -prefix /usr/local/tools/qt_4.8.3_arm -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
Устанавливаем QtCreator из репозитария:
sudo apt-get install qt-sdk
Использованный материал:
1) http://help.ubuntu.ru/wiki/old_ubuntu_versions
2) http://help.ubuntu.ru/wiki/%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9
Версия Ubuntu 10.04 уже не поддерживается, но старые пакеты можно скачать из резервного репозитория. Меняем в файле /etc/apt/sources.list строчку http://ru.archive.ubuntu.com/ubuntu/ на http://old-releases.ubuntu.com/ubuntu.
Для сборки qt надо установить пакет g++:
sudo apt-get install g++
У меня на компе установлена Ubuntu 16.04 amd64. Я устанавливаю virtualbox (sudo apt-get install virtualbox), создаю новую машину со стандартными настройками под 32-битный linux, скачиваю 32-битный iso'шник, примонтирую его в виде оптического диска и устанавливаю с него Ubuntu 10.04 x86 на виртуальную машину (подробнее).
1. Для сборки используются инструменты ELDK (Embedded Linux Development Kit) http://www.denx.de/wiki/DULG/ELDK. Я устанавливаю старую версию 4.2 (ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/eldk/4.2/arm-linux-x86/iso/arm-2008-11-24.iso). В новых версиях ELDK, начиная с 5.0, изменилась система наименований, iso'шники сгруппированны по архитектуре ARM. В плате используется микропроцессор S3C2443 фирмы Sumsung ARM9. Группа микропроцессоров ARM9 может соответствовать либо архитектуре ARMv4T, либо ARMv5TE, либо ARMv5TEJ. Для последней доступной версии ELDK 5.3, по моему мнению, стоит остановиться на версии armv4t (ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/eldk/5.3/iso/eldk-5.3-armv4t.iso), но я ее не проверял.
Я скачал файл на хост-машину и перекинул в общую папку /media/Data/Exchange, которая соответствует папке /media/Exchange гостевой ОС. Переходим в неё (/media/Exchange), создаем папку для монтирования (/mnt/iso) и монтируем исошник:
cd /media/Exchange
sudo mkdir /mnt/iso
sudo mount -o loop -o exec ./arm-2008-11-24.iso /mnt/iso
Переходим в директорию и запускаем установку в папку /usr/local/tools/eldk:
cd /mnt/iso
sudo ./install -d /usr/local/tools/eldk
Добавляем путь к бинарникам в общий путь поиска системы. Редактируем файл ~/.bashrc:
sudo nano ~/.bashrc
Добавляем в конец строку:
export PATH=$PATH:/usr/local/tools/eldk/usr/bin
После перезапуска терминала и инициализации его из обновленного скрипта ~/.bashrc вывод команды echo $PATH должен включать /usr/local/tools/eldk/usr/bin.
2. Кросскомпиляция Qt 4.8.3 производится на гостевой ОС Ubuntu 10.04 x86. Скачиваем версию qt 4.8.3 отсюда под хост-машиной, распаковываем в папку для сборки /media/Data/Exchange/qt_4.8.3_arm.
В проекте нет стандартных настроек для системы кросскомпиляции ELDK, поэтому надо будет создать файлы настроек. Переходим в папку mkspecs/qws, создаем папку и копируем файлы настроек:
cd /media/Data/Exchange/qt_4.8.3_arm/mkspecs/qws
mkdir linux-arm-eldk-g++
cp linux-arm-g++/qmake.conf ./linux-arm-eldk-g++
cp linux-arm-g++/qplatformdefs.h ./linux-arm-eldk-g++
Редактируем файл настроек nano ./linux-arm-eldk-g++/qmake.conf в соответствии с используемым средством кросскомпиляции /usr/local/tools/eldk:
#
# qmake configuration for building with linux-arm-eldk-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 = -O0 -march=armv4t -mtune=arm920t -pipe
QMAKE_CXXFLAGS_RELEASE = -O0 -march=armv4t -mtune=arm920t -pipe
# modifications to g++.conf
QMAKE_CC = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-gcc
QMAKE_CXX = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++
QMAKE_LINK = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-objcopy
QMAKE_STRIP = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-strip
load(qt_config)
Мы прописали полный путь к кроссинструментам (например, /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-gcc вместо просто arm-linux-gnueabi-gcc ) потому, что версия QtCreator 1.3.1, которая идет в этой версии Ubuntu, почему-то не считывает путь поиска из переменной $PATH.
Собираем qt 4.8.3:
cd /media/Data/Libraries/bbb/qt_4.8.3_arm
./configure -v -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-arm-eldk-g++ -prefix /usr/local/tools/qt_4.8.3_arm -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
sudo make install
Устанавливаем QtCreator из репозитария:
sudo apt-get install qt-sdk
Использованный материал:
1) http://help.ubuntu.ru/wiki/old_ubuntu_versions
2) http://help.ubuntu.ru/wiki/%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9
Комментариев нет:
Отправить комментарий