ЗАО «ЗЭО»

Техническая поддержка пользователей => Тион-Про28, Орион28 => Тема начата: via-fati от 08 Августа, 2016, 09:43:56

Название: Запуск Qt приложения на Tion pro 28
Отправлено: via-fati от 08 Августа, 2016, 09:43:56
Доброго времени суток! Прошу помощи в запуске Qt приложения для тиона 28.

К сожалению не смог найти документации в ваших источниках по настройке и запуске Qt на тионе.
Почитал форумы, попытался что-то собрать, но при сборке Qt из исходников в середине компиляции ругался на отсутствие lgstreamer-0.10 библиотеки. Их прикрутить не удалось.

Попытался скомпилить с помощью qmake -spec arm-linux-g++, но во время компиляции появилась ошибка:
/usr/include/qt4/QtCore/qatomic_i386.h In destructor 'Qstring::QString()':
/usr/include/qt4/QtCore/qatomic_i386.h:132: error: impossible constraint in 'asm'

я предполагаю это вызвано с тем, что Qt библиотеки собраны не под arm компиляцию.

Помогите настроить окружение для успешного запуска Qt приложений для Тиона.

P.S. данная ошибка связана с графикой на Qt. Обычные приложения с помощью команды qmake -spec arm-linux-g++ собирались успешно и запускались на одноплатном компьютере.
Название: Re: Запуск Qt приложения на Tion pro 28
Отправлено: Danila от 08 Августа, 2016, 15:03:05
Добрый день.
Посмотрите эти темы:
http://www.zao-zeo.ru/forum/index.php?topic=752.0
http://www.zao-zeo.ru/forum/index.php?topic=826.0
Название: Re: Запуск Qt приложения на Tion pro 28
Отправлено: via-fati от 08 Августа, 2016, 17:00:40
Добрый день.
Посмотрите эти темы:
http://www.zao-zeo.ru/forum/index.php?topic=752.0
http://www.zao-zeo.ru/forum/index.php?topic=826.0

Спасибо за ссылки!

Собрал qt, скомпилил приложение( ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped
) и попытался запустить:
Segmentation fault
в чем может быть проблема?

strace:
rt_sigaction(SIGABRT, {0x4017f688, [ABRT], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGFPE, {0x4017f688, [FPE], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGSEGV, {0x4017f688, [SEGV], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x4017f688, [TERM], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGBUS, {0x4017f688, [BUS], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
stat64("/root/Settings/Trolltech.conf", 0x19f10) = -1 ENOENT (No such file or directory)
lstat64("/root/Settings/Trolltech.conf", 0xbee80238) = -1 ENOENT (No such file or directory)
stat64("/root/Settings/Trolltech.conf", 0xbee80140) = -1 ENOENT (No such file or directory)
stat64("/root/Settings/Trolltech.conf", 0x19f10) = -1 ENOENT (No such file or directory)
stat64("/etc/xdg/Trolltech.conf", 0xbee80140) = -1 ENOENT (No such file or directory)
stat64("/etc/xdg/Trolltech.conf", 0x19f10) = -1 ENOENT (No such file or directory)
stat64("/home/dee/gfxdrivers/.", 0x1a178) = -1 ENOENT (No such file or directory)
lstat64("/home/dee/gfxdrivers/.", 0xbee802e8) = -1 ENOENT (No such file or directory)
access("/dev/fb0", R_OK|W_OK)           = 0
open("/dev/fb0", O_RDWR|O_LARGEFILE|0x80000) = 8
fcntl64(8, F_SETFD, FD_CLOEXEC)         = 0
ioctl(8, FBIOGET_FSCREENINFO, 0xbee8058c) = 0
ioctl(8, FBIOGET_VSCREENINFO, 0xbee804ec) = 0
mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 8, 0) = 0x410ad000
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
rt_sigaction(SIGSEGV, {SIG_DFL}, {0x4017f688, [SEGV], SA_RESTART|0x4000000}, 8) = 0
socket_subcall(0x18000, 0, 0x100, 0, 0, 0x19668, 0xb, 0x12c) = 0
statfs64(umovestr: Input/output error
0x57e, 1406, {???})            = 0
sigreturn()                             = ? (mask now [HUP])
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Process 1406 detached
Название: Re: Запуск Qt приложения на Tion pro 28
Отправлено: Ziminets от 09 Августа, 2016, 15:09:21
Приложение запускали с ключем -qws ?
Название: Re: Запуск Qt приложения на Tion pro 28
Отправлено: via-fati от 09 Августа, 2016, 15:53:38
Да, без ключа ругается на отсутствие сервера.
Название: Re: Запуск Qt приложения на Tion pro 28
Отправлено: via-fati от 15 Августа, 2016, 12:55:09
Проблема была в неправильно скопированных библиотеках.

Если кому интересно:
Пользовался общими инструкциями по установке QT на Arm
Например (https://habrahabr.ru/post/106526/)
и некоторые с форума

Что я сделал:

1) Собрал из исходников tslib-1.0
2) Согласно инструкции Ziminets из архива  Qt_Install.zip (Кликни на меня (http://www.zao-zeo.ru/forum/index.php?topic=752.0)) попытался собрать QT 4.6.0. для arm
Примечание: если будет ругаться "tslib ошибка укажите QMAKE_LIBDIR и QMAKE_INCDIR в mkspec/..."
Тогда в файле qmake.conf для этой спецификации(которую указываем при конфигурировании) добавить нечто такое в конец строки linux.conf:

# modifications to linux.conf
.....
QMAKE_INCDIR += /home/ubuntu/tslib/include/ # путь к кросс-компилированной include директории tslib, получившейся на 1 этапе
QMAKE_LIBDIR            += /home/ubuntu/tslib/lib/ # Аналогично для lib директории

собралось с подобной конфигурацией:
./configure -qconfig pmu -embedded arm -xplatform qws/linux-mxc-g++ -release -opensource -nomake demos -nomake examples -nomake docs -prefix /usr/local/Trolltech/QtEmbedded-4.6.0 -qt-gfx-linuxfb -qt-kbd-tty -qt-mouse-tslib -little-endian -host-little-endian -no-qt3support -no-largefile -no-gstreamer -no-multimedia -no-phonon -no-webkit -no-cups -no-dbus -no-glib -optimized-qmake -confirm-licens
3) После успешной компиляции и установки(make install) Qt скопировать кросс-компилированный tslib со всей иерархией директорий строго по тому же адресу на тион, например /home/ubuntu/tslib на хосте
/home/ubuntu/tslib на тионе. Так нужно было мне, потому что ругался на отсутствие по данному пути некоторых .conf файлов. /etc/ было недостаточно. Может у вас будет по другому.

ts.conf должен быть следующим:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

директорию /lib/ из cross-compiled Qt перекинуть в /usr/lib/ на тионе
тоже самое с /tslib/lib директорией

задать переменные окружения:
export QT_QWS_FONTDIR=/usr/lib/fonts
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONSOLEDEVICE=/dev/tty
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

запускать приложения черей -qws ключ.

Всем удачи!
Название: Re: Запуск Qt приложения на Tion pro 28
Отправлено: Danila от 16 Августа, 2016, 13:15:41
Спасибо за подробную инструкцию.