LINUX.ORG.RU

Qml падает в OpenEmbedded

 , ,


0

1

Приветствую. Разрабатываю qml приложения для openembedded. Железка Atom T640, gma600. Для этой железки была выбрана ветка Daisy https://www.yoctoproject.org/downloads/bsps/daisy161/crown-bay, qt5.2.1. В Qt есть пример QCinematicExpirience, на этой сборке он работает без проблем. На хостовую машину поставил тоже qt5.2.1 и скомпилил шаблонный проеки qml и включил его в сборку

import QtQuick 2.0

Rectangle {
    width: 360
    height: 360
    Text {
        text: qsTr("Hello world!")
        anchors.centerIn: parent
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}

И тоже все гуд. Но при попытке изменить надпись на кириллицу, приложений падает (Segmentation Fault). Вот что показывает gdb:

(gdb) start
Temporary breakpoint 1 at 0x8049a50: file ../test_qml3/untitled/main.cpp, line 5.
Starting program: /home/root/./untitled 
To enable execution of this file add
	add-auto-load-safe-path /lib/libthread_db-1.0.so
line to your configuration file "/home/root/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/home/root/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"

Temporary breakpoint 1, main (argc=1, argv=0xbffffc04)
    at ../test_qml3/untitled/main.cpp:5
(gdb) next
8	in ../test_qml3/untitled/main.cpp
(gdb) 
5	in ../test_qml3/untitled/main.cpp
(gdb) next
6	in ../test_qml3/untitled/main.cpp
(gdb) 
8	in ../test_qml3/untitled/main.cpp
(gdb) 
9	in ../test_qml3/untitled/main.cpp
(gdb) next
[New LWP 845]
10	in ../test_qml3/untitled/main.cpp
(gdb) 
12	in ../test_qml3/untitled/main.cpp
(gdb) 
[New LWP 846]

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 846]
0xb6cc2669 in ?? () from /usr/lib/libEMGDOGL.so
(gdb) q
В чем причина падения? Все шрифты установлены, поддержка кириллицы тоже есть.

Перемещено shell-script из general


qt5.2.1

что заставляет людей использовать старые версии динамически развивающихся проектов? будь мужиком, собери себе нормальный Qt!

dib2 ★★★★★ ()
Ответ на: комментарий от dib2

Да, main.cpp шаблонный. Cделал вот такой тест. Есть такой вот рецепт:

DESCRIPTION = "testqml recipe"
PN = 'qmlhw'
PV = '1.0'
PR = 'r2'

LICENSE = "CLOSED"

DEPENDS = " qtbase qtdeclarative qtquickcontrols "
RDEPENDS_${PN} += " qtdeclarative-qmlplugins qtbase-plugins "
inherit qmake5

RRECOMMENDS_${PN} += " \
    qtquickcontrols-qmlplugins \
"

SRC_URI = "file:///test.tar.gz"
S = "${WORKDIR}/test_qml3/untitled"

do_install() {
	install -d ${D}${bindir}/
	install -m 0755 ${WORKDIR}/build/untitled ${D}${bindir}/
}
Делаю сборку. Запускаю пример, qt говорит, что нет директории со шрифтами /usr/lib/fonts , и это действительно так. Если создать вручную /usr/lib/fonts, пример загружается, но вместо текста - квадратики, понятно что он шрифты не подцепил. Далее копирую в эту директорию FreeSans.ttf. Приложение запустилось, видно в центре «Hello World», однако при попытке написать «Hello мир!» - снова падает. Затем сделал следующее: в рецепте подключил qtbase-font, вижу в usr/lib/fonts много разных шрифтов, но приложение по прежнему падает. Что еще можно попробовать?

Less ()
Ответ на: комментарий от I-Love-Microsoft

Пробовал подключать xorg-minimal-fonts, нет эффекта.

Less ()
Ответ на: комментарий от Less

1. valgrind есть возможность запустить на таргете?
2. backtrace надо как-то получить более вменяемый
3. Вывести кирилицу в консоль получается? (чтобы отсечь проблемы unicode от рендеринга текста в графику)

dib2 ★★★★★ ()
Ответ на: комментарий от Less

Попробуй так c пакетом qtbase-fonts в runtime depends:

RDEPENDS_${PN} += " qtdeclarative-qmlplugins qtbase-plugins qtbase-fonts "
Мне в свое время только это помогло.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от dib2

Вывести кирилицу в консоль получается? (чтобы отсечь проблемы unicode от рендеринга текста в графику)

Хотел с этого начать, но не получилось вывести кириллицу в консоль. Пробовал так: local.conf

GLIBC_GENERATE_LOCALES = "en_US.UTF-8 ru_RU.UTF-8"
а в рецепте
IMAGE_LANGUAS = "ru-ru"
В итоге в /usr/lib/locales появилась ru-RU локаль, но что дальше делать - не знаю, полагаю что в X прописывать надо?

Less ()
Ответ на: комментарий от I-Love-Microsoft

qtbase-font тоже не помогло... Я упомянул об этом в посте выше. Шрифты создаются, а при запуске приложения с кириллицей - segmentation fault(

Less ()
Ответ на: комментарий от Less

Да, сори, ясно... А мне это помогло включить кирилицу в приложения на Qt Widgets. Удается ли в Qt Widgets выводить кирилицу? Прежде чем QML.

I-Love-Microsoft ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.