Инструменты пользователя

Инструменты сайта


wiki:qt_angstrom
no way to compare when less than two revisions

Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
Последняя версия
wiki:qt_angstrom [2014/05/21 22:50] – [Компиляция tslib для ARM] maxx
Строка 1: Строка 1:
 +====== Компиляция Qt-приложения под Angstrom-linux (OpenEmbedded) ======
  
 +//Еще один способ описан здесь: [[http://hiteg.blogspot.com/2009/03/porting-qtembedded-443-to-s3c2440.html]]//
 +
 +===== Требуемые утилиты =====
 +
 +  * архив qt-embedded-linux-opensource-src-4.4.3.tar.gz
 +  * собранный Angstrom, а именно компиляторы:
 +arm-angstrom-linux-gnueabi-gcc, arm-angstrom-linux-gnueabi-g++ и т.п.
 +
 +===== Qt 4.8.1 =====
 +<code>
 +/home/maxx/cardio/qt-everywhere-opensource-src-4.8.1/configure -prefix /opt/qte4.8.1 -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-arm-gnueabi-g++ -depths 16,24,32 -no-mmx -no-3dnow -no-sse -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle -fast -qt-mouse-tslib -nomake demos -nomake examples -no-svg -no-phonon -no-qt3support -no-svg -qt-gfx-linuxfb -no-javascript-jit -confirm-license -opensource -no-webkit
 +</code>
 +
 +===== Компиляция Qt под ARM-архитектуру =====
 +1. Добавим в переменные окружения путь к компилятору от Angstrom-linux:
 +<code>export PATH=path_to_bin_where/arm-angstrom-gcc:$PATH</code>
 +
 +Например:
 +<code>export PATH=/stuff/tmp/cross/bin:$PATH</code>
 +
 +2. Распаковываем архив qt-everywhere-opensource-src-4.7.2.tar.gz и заходим в директорию
 +
 +3. Выполняем configure с необходимыми параметрами:
 +<code>$ ./configure -embedded arm-gnueabi -no-armfpa -little-endian -qt-gfx-transformed -qt-gfx-linuxfb -nomake demos -nomake examples -no-svg -no-phonon -no-qt3support -no-svg</code>
 +Также можно выбрать в каком виде будет собираться библиотека: статическом или динамически-линкуемой. Соответственно, к строке конфигурации добавляют параметры "-static" или "-shared"
 +//Соглашаемся с лицензией, набирая "yes"//
 +
 +4. Запускаем компиляцию, которая может длиться до нескольких часов в зависимости от производительности компьютера
 +<code>make</code>
 +
 +5. Устанавливаем собранную библиотеку в дерево Linux:
 +<code>sudo make install</code>
 +
 +и теперь должна появиться директория /usr/local/Trolltech/
 +
 +===== Компиляция приложений Qt под ARM Angstrom-linux =====
 +
 +//Примечание: для удобства и скорости желательно сначала отладить приложение на х86-компьютере//
 +
 +1. Создаем Makefile
 +<code>/usr/local/Trolltech/QtEmbedded-4.4.3-arm/bin/qmake Your_Application.pro</code>
 +
 +2. Если в переменных окружения не прописан путь к компилятору от Angstrom-linux (arm-angstrom-linux-gnueabi-gcc, arm-angstrom-linux-gnueabi-g++), то прописываем его:
 +
 +<code>export PATH=path_to_bin_where/arm-angstrom-gcc:$PATH</code>
 +
 +3. Запускаем компиляцию:
 +<code>make</code>
 +
 +===== Запуск Qt-приложения под Angstrom-linux =====
 +
 +1. В работающем Angstrom-linux необходимо установить библиотеку для поддержки C++:
 +<code>ipkg install libstdc++6_4.1.2-r4_armv5te.ipk</code>
 +//libstdc++6_4.1.2-r4_armv5te.ipk находится здесь: "/stuff/tmp/deploy/glibc/ipk/armv5te/", если вы собирали Ангстром в "/stuff"//
 +
 +2. Скопировать в папку с вашей программой so-библиотеки Qt из папки:
 +<code>/usr/local/Trolltech/QtEmbedded-4.4.3-arm/lib</code>
 +
 +Например, могут понадобится:
 +
 +libQtCore.so.4
 +libQtGui.so.4
 +libQtNetwork.so.4
 +
 +3. Создать директорию для шрифтов на целевой платформе с тем же именем, что и на х86-Linux:
 +<code>/usr/local/Trolltech/QtEmbedded-4.4.3-arm/lib/fonts</code>
 +
 +4. Скопировать в новую директорию шрифты, используемые в приложении
 +
 +5. Запустить программу на целевой платформе
 +<code>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./YourApplication -qws</code>
 +
 +===== Удаление курсора мыши из Qt-приложения =====
 +Чтобы убрать курсор мыши (например, когда используется touchscreen) из приложений QT, необходимо при компиляции библиотеки QT определить переменную **-DQT_NO_CURSOR** и собрать ее. Стоит учесть, что при такой конфигурации ни одно из приложений не будет содержать курсор. Кроме того, Примеры приложений (samples) будут компилироваться с ошибками, т.к. они используют курсор.
 +
 +Также можно при компиляции библиотеки указать переменную "-no-feature-CURSOR"
 +===== Сжатие исполняемого файла приложения QT для уменьшения размера =====
 +При создании исполняемого файла со статической линковкой библиотек, размер файла получается огромным, даже после использования утилиты strip. Если на x86 архитектуре это не сильно заметно, то на встраиваемых платформах ARM это сильно замедляет запуск приложений, т.к. необходимо считать с медленного флеш-накопителя 10 мегабайт или более.
 +
 +Мы решили эту проблему с помощью утилиты uclx, сжимающей исполняемые файлы для ARM архитектуры. Исходный код утилиты создан Cecchinel Stephan в 2003г, который мы обновили до современных архитектур.
 +
 +//Примечание: данная утилита компилируется и для x86 процессоров, но не тестированно//
 +
 +Для компиляции утилиты потребуется:\\
 +1) Компилятор для архитектуры ARM, например CodeSourcery arm-2008q1 arm-none-linux-gnueabi\\
 +2) Библиотека ucl-1.03\\
 +Библиотеку скачивают отсюда: [[http://www.oberhumer.com/opensource/ucl/download/]]\\
 +3) Исходники uclx скачивают отсюда: [[http://www.mentorel.com/downloads/uclx-src.tgz]]
 +
 +Процедура сборки утилиты:\\
 +1) Прописываем путь к компилятору ARM:\\
 +<code>export PATH=~/arm-2008q1/bin:$PATH</code>
 +2) Распаковываем библиотеку ucl-1.03 и конфигурируем её:\\
 +<code>./configure --host=arm-none-linux-gnueabi --prefix=/some_place
 +make && make install</code>
 +3) Распаковываем исходники uclx и настраиваем Makefile:\\
 +Устанавливаем переменную CFLAGS, чтобы флаг -I указывал на prefix, что был использован для библиотеки ucl-1.03. То же самое делают для переменной LIBS.\\
 +Далее выполняют команду make и, если всё настроено верно, то вы получаете исполняемый файл утилиты uclx, который необходимо запускать на конечной платформе ARM. Время работы утилиты сильно зависит от скорости процессора и памяти.
 +
 +===== Компрессор для исполняемых файлов =====
 +Еще один хорошо развивающийся компрессор для исполняемых файлов: [[http://upx.sourceforge.net]]
 +
 +===== Компиляция tslib для ARM =====
 +
 +Для компиляции библиотеки потребуются пакеты **libtool** и **autoconf**.
 +
 +1) Скачиваем саму библиотеку tslib
 +<code>
 +git clone git://github.com/kergoth/tslib.git
 +</code>
 +Компиляция
 +<code>
 +cd tslib
 +./autogen.sh
 +export CC=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc
 +export CXX=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc
 +./configure --build=i386-linux --host=arm-linux-gnueabihf --target=arm --prefix=$PWD/build
 +make -j2
 +make install
 +</code>
 +Обратите внимание, что в директории **tslib/build** находяться все созданные файлы, включая саму библиотеку и файлы заголовков.
 +<code>
 +tslib$ ls build/
 +bin  etc  include  lib
 +</code>
wiki/qt_angstrom.txt · Последнее изменение: 2014/05/21 22:51 — maxx