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

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


wiki:qt_angstrom

Компиляция 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

/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

Компиляция Qt под ARM-архитектуру

1. Добавим в переменные окружения путь к компилятору от Angstrom-linux:

export PATH=path_to_bin_where/arm-angstrom-gcc:$PATH

Например:

export PATH=/stuff/tmp/cross/bin:$PATH

2. Распаковываем архив qt-everywhere-opensource-src-4.7.2.tar.gz и заходим в директорию

3. Выполняем configure с необходимыми параметрами:

$ ./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

Также можно выбрать в каком виде будет собираться библиотека: статическом или динамически-линкуемой. Соответственно, к строке конфигурации добавляют параметры «-static» или «-shared» Соглашаемся с лицензией, набирая «yes»

4. Запускаем компиляцию, которая может длиться до нескольких часов в зависимости от производительности компьютера

make

5. Устанавливаем собранную библиотеку в дерево Linux:

sudo make install

и теперь должна появиться директория /usr/local/Trolltech/

Компиляция приложений Qt под ARM Angstrom-linux

Примечание: для удобства и скорости желательно сначала отладить приложение на х86-компьютере

1. Создаем Makefile

/usr/local/Trolltech/QtEmbedded-4.4.3-arm/bin/qmake Your_Application.pro

2. Если в переменных окружения не прописан путь к компилятору от Angstrom-linux (arm-angstrom-linux-gnueabi-gcc, arm-angstrom-linux-gnueabi-g++), то прописываем его:

export PATH=path_to_bin_where/arm-angstrom-gcc:$PATH

3. Запускаем компиляцию:

make

Запуск Qt-приложения под Angstrom-linux

1. В работающем Angstrom-linux необходимо установить библиотеку для поддержки C++:

ipkg install libstdc++6_4.1.2-r4_armv5te.ipk

libstdc++6_4.1.2-r4_armv5te.ipk находится здесь: «/stuff/tmp/deploy/glibc/ipk/armv5te/», если вы собирали Ангстром в «/stuff»

2. Скопировать в папку с вашей программой so-библиотеки Qt из папки:

/usr/local/Trolltech/QtEmbedded-4.4.3-arm/lib

Например, могут понадобится:

libQtCore.so.4 libQtGui.so.4 libQtNetwork.so.4

3. Создать директорию для шрифтов на целевой платформе с тем же именем, что и на х86-Linux:

/usr/local/Trolltech/QtEmbedded-4.4.3-arm/lib/fonts

4. Скопировать в новую директорию шрифты, используемые в приложении

5. Запустить программу на целевой платформе

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./YourApplication -qws

Удаление курсора мыши из 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:

export PATH=~/arm-2008q1/bin:$PATH

2) Распаковываем библиотеку ucl-1.03 и конфигурируем её:

./configure --host=arm-none-linux-gnueabi --prefix=/some_place
make && make install

3) Распаковываем исходники uclx и настраиваем Makefile:
Устанавливаем переменную CFLAGS, чтобы флаг -I указывал на prefix, что был использован для библиотеки ucl-1.03. То же самое делают для переменной LIBS.
Далее выполняют команду make и, если всё настроено верно, то вы получаете исполняемый файл утилиты uclx, который необходимо запускать на конечной платформе ARM. Время работы утилиты сильно зависит от скорости процессора и памяти.

Компрессор для исполняемых файлов

Еще один хорошо развивающийся компрессор для исполняемых файлов: http://upx.sourceforge.net

wiki/qt_angstrom.txt · Последнее изменение: 2014/05/21 22:51 — maxx