Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/65: Рейтинг темы: голосов - 65, средняя оценка - 4.78
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834

Сборка проекта под ARM Linux из Debian

28.05.2015, 14:54. Показов 13312. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Работаю в:
C++ (Qt)
1
Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.65-1+deb7u2 i686 GNU/Linux
Создал Qt приложение. Все библиотеки валяются рядом. Релиз на Debian запускается корректно.

Теперь проблема - релиз совсем НЕ запускается на
C++ (Qt)
1
Linux raspberry 3.18.7+ #755 PREEMPT arm6l GNU Linux
Логично, ведь собран он на другой платформе.

И, теперь, вопрос. Кто-нибудь может рассказать последовательность действий для компиляции приложения под raspbian (ARM)?

Информации в интернете мало, но в общих чертах я понял, что нужно где-то брать кросскомпилятор, собирать специальную версию Qt и именно через нее компилировать проект.

Есть ли какие-то подводные камни, инструкции, советы бывалых?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2015, 14:54
Ответы с готовыми решениями:

Сборка проекта в Ubuntu для Linux arm
Всем привет! Мне нужно создать приложение для Arm устройства . Под рукой пока что только Ubuntu x64 и qt-enterprise-linux-x64-5.5.1....

Сборка проекта под ARM.
Привет Всем! У меня есть код, котрый я компилирую под imx6. main.cpp #include <stdio.h> #include <unistd.h> #include...

Qt сборка проекта под Linux
Здравствуйте! Имею проект написанный из под Windows. Хочу собрать debug-сборку под Linux (Ubuntu). Да, вот только Qt creator кидает...

40
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
03.06.2015, 12:20
Студворк — интернет-сервис помощи студентам
echo $BDIR
ls /mnt/rpi-rootfs

Покажите вывод
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
03.06.2015, 12:31  [ТС]
По-прежнему не могу собрать проект...
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
03.06.2015, 12:35
Поэтому я и прошу вывод этих двух команд
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
03.06.2015, 12:58  [ТС]
Что-то с интернетом - не сразу обновилось.

Вывод второй команды сейчас пустой. Но разве это как-то будет влиять? Зачем же нам сейчас сам распбери, если все библиотеки уже должны быть на на основной машине?

Bash
1
2
3
4
root@debian:~# echo $BDIR
/root/src/rpi
root@debian:~# ls /mnt/rpi-rootfs
root@debian:~#
Добавлено через 3 минуты
Flassie, вот вывод после монтирования:
C++ (Qt)
1
2
3
root@debian:/mnt/rpi-rootfs# ls /mnt/rpi-rootfs
bin   dev  home  lost+found  mnt  proc  run   selinux  sys  usr
boot  etc  lib   media       opt  root  sbin  srv      tmp  var
Добавлено через 6 минут
Указал библиотеки принудительно:
C++ (Qt)
1
export LD_LIBRARY_PATH=mnt/rpi-rootfs/opt/qt5-rpi/lib:$LD_LIBRARY_PATH
и снова тем же способом запустил qmake и make, сборка прошла:
C++ (Qt)
1
2
root@debian:/home/gorbag/untitled4# file untitled4
untitled4: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x2c90d0e94a9482e893c26932c1c803433de372a2, not stripped

Попробую перенести приложение и проверить. О результатах отпишусь.
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
03.06.2015, 13:43
Цитата Сообщение от Горбаг Посмотреть сообщение
Вывод второй команды сейчас пустой. Но разве это как-то будет влиять? Зачем же нам сейчас сам распбери, если все библиотеки уже должны быть на на основной машине?
Потому что компилятор уверен (ему так говоря), что все библиотеки лежат на распберри и пытается получить их именно по этому пути)
Посмотрите на лог сборки проекта, что там пишется интересного и откуда берутся файлы
1
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
03.06.2015, 16:34  [ТС]
Flassie, запуск пустого приложения на распбери, в целом, прошел успешно.

Но есть и свои тонкости:
1) Окно программы открывается сразу на весь экран, хотя я этого в коде при вызове виджета формы явно не указывал - кто-нибудь может рассказать, почему это происходит?
2) Сразу же после запуске приложения на распбери перестает работать настроенный тачскрин. Стоит закрыть приложение через alt+f4, тачскрин снова начинает корректно работать. Чудеса. Опять же - сталкивался хоть кто-нибудь?

Добавлено через 4 минуты
Ах, да. Забыл дополнительную информацию.
Вывод консоли при запуске приложения:
C++ (Qt)
1
2
3
4
5
6
7
pi@raspberrypi ~/untitled4 $ ./untitled4
QSocketNotifier: Can only be used with threads started with QThread
EGLFS: Unable to query physical screen size, defaulting to 100 dpi.
EGLFS: To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
EGLFS: Unable to query screen depth, defaulting to 32.
EGLFS: To override, set QT_QPA_EGLFS_DEPTH.
This plugin does not support propagateSizeHints()
Добавлено через 24 минуты
По-моему дело в QtWayland... буду пробовать.

Добавлено через 26 минут
Проблема при сборке вейланда:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
root@debian:~/src/rpi/wayland# ./autogen.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4 ${ACLOCAL_FLAGS}
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:45: installing `./config.guess'
configure.ac:45: installing `./config.sub'
configure.ac:23: installing `./install-sh'
configure.ac:23: installing `./missing'
Makefile.am: installing `./depcomp'
autoreconf: Leaving directory `.'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for grep that handles long lines and -e... /bin/grep
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert i686-pc-linux-gnu file names to i686-pc-linux-gnu format... func_convert_file_noop
checking how to convert i686-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for FFI... no
configure: error: Package requirements (libffi) were not met:
 
No package 'libffi' found
 
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
 
Alternatively, you may set the environment variables FFI_CFLAGS
and FFI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
Добавлено через 34 минуты
Хм... Мне кажется, или пакета libfii вообще не существует и где-то опечатка? Может имелся ввиду пакет libffi?

Добавлено через 1 минуту
Flassie, а как у вас то всё собиралось? Без проблем? Сталкивались с подобным? Где-то еще вычитал, что, возможно, поменялась версия вейланда в репах, отсюда и проблемы. Можно ли где-то взять версию, которой когда-то пользовались именно вы?

Добавлено через 25 минут
Ну, у меня пошло вот так:
C++ (Qt)
1
2
3
4
5
sudo apt-get install libffi-dev
./autogen.sh --disable-documentation
./configure --disable-documentation
make
cp wayland-scanner /opt/qt5-rpi/bin/
Как видим, есть небольшие отклонения от инструкции.

Добавлено через 8 минут
Блин... Опять застрял:
C++ (Qt)
1
2
3
root@debian:~# weston-launch &
[1] 1679
root@debian:~# -bash: weston-launch: команда не найдена
Добавлено через 3 минуты
Хотя... может стоит отталкиваться от этого:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@debian:~/src/rpi/qtwayland# qmake CONFIG+=wayland-compositor
Info: creating cache file /root/src/rpi/qtwayland/.qmake.cache
Checking for wayland... no
Checking for xkbcommon... yes
Checking for wayland_cursor... yes
Checking for wayland_scanner... no
Checking for wayland_egl... no
Checking for egl... no
Checking for brcm_egl... yes
Checking for glx... no
Checking for xcomposite... yes
Checking for drm_egl_server... no
Checking for libhybris_egl_server... no
Project WARNING: QtWayland requires Wayland 1.4.0 or higher, QtWayland will not be built
Project WARNING: QtWayland requires wayland-scanner, QtWayland will not be built
Project MESSAGE: no wayland-egl support detected, cross-toolkit compatibility disabled
В инструкции сказано, что последнее сообщение об ошибке - это нормально. Но вот два предыдущих варнинга меня беспокоят. По-моему как раз поэтому у меня и не видится дальнейшая команда... У кого есть идеи?
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
03.06.2015, 16:40
К сожалению приложения я собирал без QtWayland'a, потому помочь не могу
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
04.06.2015, 11:40  [ТС]
Хм... Может быть я не туда копаю. Есть идеи, почему отваливается тачскрин при запуске портированного приложения?
Я тоже поначалу не хотел цепляться за вейланд, но почему-то мне подумалось, что проблема именно в нем.

Добавлено через 18 часов 27 минут
Ни у кого по-прежнему нет идей? Почему тачскрин не работает на распберри в портированном приложении? Обычный helloworld в окне QWidget...
Сам по себе он(тачскрин) настроен и работает корректно. Запускаю приложение командой ./untitled и тачскрин перестает работать, пока не выключишь приложение с клавиатуры, например. Стоит его выключить, тачскрин снова работает...

Может быть в Qt5 надо самому отлавливать события клика мыши и переставлять курсор куда нужно? Ведь портировали же люди приложения на распбери и все работало без костылей. Или нет?

Добавлено через 15 минут
Интересная особенность - окно на весь экран. На окне есть пара кнопок. Нажимаю любую мышкой - она подсвечивается как обычная нажатая кнопка. Но при этом на рабочем столе щелкаются ярлыки. Как будто событие клика мыши проходит сразу 2 раза - на форму и на рабочий стол, чего быть не должно по идее.

С тачскрином или такая же ситуация или его события просто уходят на рабочий стол, вообще игнорируя окно программы.

Ну и еще деталь - ДО запуска программы я навожу курсор на ярлык корзины, например. Запускаю по ssh свое приложение. Окно открывается, курсора по центру экрана нет (а корзина была по центру). Двигая курсор, я понял, что он появляется где-то слева сверху за экраном, то есть есть еще и смещение какое-то. Ну и если просто щелкать сразу после запуска приложения мышкой, откроется, конечно же, корзина...

Flassie, подскажете, куда копать с такими симптомами?
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
04.06.2015, 11:49
Цитата Сообщение от Горбаг Посмотреть сообщение
Flassie, подскажете, куда копать с такими симптомами?
Я не уверен, но попробуйте использовать не QWidgets, а QtOpenGLWidgets/QtQuick2
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
04.06.2015, 16:02  [ТС]
Буду пробовать, конечно. Но может быть дело кроется именно в настройках eglsf?

http://doc.qt.io/qt-5/embedded-linux.html#eglfs

Плюс нарыл на одной из страниц настройки:
Bash
1
2
3
4
5
6
7
8
export QT_DEBUG_PLUGINS=1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/arm-linux-gnueabihf/
export QT_PLUGIN_PATH=/usr/lib/plugins
export QT_QPA_FONTDIR=/usr/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/platforms
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
Но я их не применял. Не знаю, какие еще доступны настройки для eglsf и будет ли от этого толк. Тачскрин то работает, но почему же он цепляет именно рабочий стол, а не запущенное на нем приложение...

Добавлено через 1 час 5 минут
Вот честно - даже не понимаю, как начать использовать вместо QWidget QtOpenGLWidgets либо QtQuick2.

Попытался с квиком разобраться:
Bash
1
2
3
t@debian:/home/gorbag/untitled6# /opt/qt5-rpi/bin/qmake untitled6.qml
/home/gorbag/untitled6/untitled6.qml:1: Extra characters after test expression.
Error processing project file: untitled6.qml
Это же хмл файлы, скомпилить их не получается. Да и на офсайте вроде как написано, что QWidget поддерживается... Как же так?

Какой еще вообще есть вариант, чтобы портировать и запустить приложение на распбери?
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
05.06.2015, 11:27  [ТС]
Стыдно мне опять в этом признаваться, но я снова толком не понял, как и что я сделал, но, приложение запустить нормально получилось так:
Bash
1
/home/pi/untitled4/untitled4
Лог терминала (много!):
Кликните здесь для просмотра всего текста
pi@raspberrypi ~ $ /home/pi/untitled4/untitled4 -platform xcb
QFactoryLoader::QFactoryLoader() checking directory path "/opt/qt5-rpi/plugins" ...
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/untitled4" ...
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/main.cpp"
QElfParser: '/home/pi/untitled4/main.cpp' is not an ELF object
"'/home/pi/untitled4/main.cpp' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/main.o"
"Plugin verification data mismatch in '/home/pi/untitled4/main.o'"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/mainwindow.cpp"
QElfParser: '/home/pi/untitled4/mainwindow.cpp' is not an ELF object
"'/home/pi/untitled4/mainwindow.cpp' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/mainwindow.h"
QElfParser: '/home/pi/untitled4/mainwindow.h' is not an ELF object
"'/home/pi/untitled4/mainwindow.h' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/mainwindow.o"
"Plugin verification data mismatch in '/home/pi/untitled4/mainwindow.o'"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/mainwindow.ui"
QElfParser: '/home/pi/untitled4/mainwindow.ui' is not an ELF object
"'/home/pi/untitled4/mainwindow.ui' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/Makefile"
QElfParser: '/home/pi/untitled4/Makefile' is not an ELF object
"'/home/pi/untitled4/Makefile' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/moc_mainwindow.cpp"
QElfParser: '/home/pi/untitled4/moc_mainwindow.cpp' is not an ELF object
"'/home/pi/untitled4/moc_mainwindow.cpp' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/moc_mainwindow.o"
"Plugin verification data mismatch in '/home/pi/untitled4/moc_mainwindow.o'"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/ui_mainwindow.h"
QElfParser: '/home/pi/untitled4/ui_mainwindow.h' is not an ELF object
"'/home/pi/untitled4/ui_mainwindow.h' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/untitled4"
"Plugin verification data mismatch in '/home/pi/untitled4/untitled4'"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/untitled4.pro"
QElfParser: '/home/pi/untitled4/untitled4.pro' is not an ELF object
"'/home/pi/untitled4/untitled4.pro' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/untitled4.pro.user"
QElfParser: '/home/pi/untitled4/untitled4.pro.user' is not an ELF object
"'/home/pi/untitled4/untitled4.pro.user' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() checking directory path "/opt/qt5-rpi/plugins/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/platforms/libqeglfs.so"
Found metadata in lib /opt/qt5-rpi/plugins/platforms/libqeglfs.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFacto ryInterface.5.2",
"MetaData": {
"Keys": [
"eglfs"
]
},
"className": "QEglFSIntegrationPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("eglfs")
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/platforms/libqlinuxfb.so"
Found metadata in lib /opt/qt5-rpi/plugins/platforms/libqlinuxfb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFacto ryInterface.5.2",
"MetaData": {
"Keys": [
"linuxfb"
]
},
"className": "QLinuxFbIntegrationPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("linuxfb")
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/platforms/libqminimal.so"
Found metadata in lib /opt/qt5-rpi/plugins/platforms/libqminimal.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFacto ryInterface.5.2",
"MetaData": {
"Keys": [
"minimal"
]
},
"className": "QMinimalIntegrationPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("minimal")
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/platforms/libqminimalegl.so"
Found metadata in lib /opt/qt5-rpi/plugins/platforms/libqminimalegl.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFacto ryInterface.5.2",
"MetaData": {
"Keys": [
"minimalegl"
]
},
"className": "QMinimalEglIntegrationPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("minimalegl")
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/platforms/libqoffscreen.so"
Found metadata in lib /opt/qt5-rpi/plugins/platforms/libqoffscreen.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFacto ryInterface.5.2",
"MetaData": {
"Keys": [
"offscreen"
]
},
"className": "QOffscreenIntegrationPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("offscreen")
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/platforms/libqxcb.so"
Found metadata in lib /opt/qt5-rpi/plugins/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFacto ryInterface.5.2",
"MetaData": {
"Keys": [
"xcb"
]
},
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/untitled4/platforms" ...
loaded library "/opt/qt5-rpi/plugins/platforms/libqxcb.so"
loaded library "Xcursor"
QFactoryLoader::QFactoryLoader() checking directory path "/opt/qt5-rpi/plugins" ...
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/untitled4" ...
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/main.cpp"
QElfParser: '/home/pi/untitled4/main.cpp' is not an ELF object
"'/home/pi/untitled4/main.cpp' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/main.o"
"Plugin verification data mismatch in '/home/pi/untitled4/main.o'"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/mainwindow.cpp"
QElfParser: '/home/pi/untitled4/mainwindow.cpp' is not an ELF object
"'/home/pi/untitled4/mainwindow.cpp' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/mainwindow.h"
QElfParser: '/home/pi/untitled4/mainwindow.h' is not an ELF object
"'/home/pi/untitled4/mainwindow.h' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/mainwindow.o"
"Plugin verification data mismatch in '/home/pi/untitled4/mainwindow.o'"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/mainwindow.ui"
QElfParser: '/home/pi/untitled4/mainwindow.ui' is not an ELF object
"'/home/pi/untitled4/mainwindow.ui' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/Makefile"
QElfParser: '/home/pi/untitled4/Makefile' is not an ELF object
"'/home/pi/untitled4/Makefile' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/moc_mainwindow.cpp"
QElfParser: '/home/pi/untitled4/moc_mainwindow.cpp' is not an ELF object
"'/home/pi/untitled4/moc_mainwindow.cpp' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/moc_mainwindow.o"
"Plugin verification data mismatch in '/home/pi/untitled4/moc_mainwindow.o'"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/ui_mainwindow.h"
QElfParser: '/home/pi/untitled4/ui_mainwindow.h' is not an ELF object
"'/home/pi/untitled4/ui_mainwindow.h' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/untitled4"
"Plugin verification data mismatch in '/home/pi/untitled4/untitled4'"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/untitled4.pro"
QElfParser: '/home/pi/untitled4/untitled4.pro' is not an ELF object
"'/home/pi/untitled4/untitled4.pro' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() looking at "/home/pi/untitled4/untitled4.pro.user"
QElfParser: '/home/pi/untitled4/untitled4.pro.user' is not an ELF object
"'/home/pi/untitled4/untitled4.pro.user' is not an ELF object"
not a plugin
QFactoryLoader::QFactoryLoader() checking directory path "/opt/qt5-rpi/plugins/platformthemes" ...
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/untitled4/platformthemes" ...
QFactoryLoader::QFactoryLoader() checking directory path "/opt/qt5-rpi/plugins/platforminputcontexts" ...
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so"
Found metadata in lib /opt/qt5-rpi/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so, metadata=
{
"IID": "org.qt-project.Qt.QPlatformInputContextFactoryI nterface",
"MetaData": {
"Keys": [
"compose"
]
},
"className": "QComposePlatformInputContextPlugin" ,
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("compose")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/untitled4/platforminputcontexts" ...
loaded library "/opt/qt5-rpi/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so"
QFactoryLoader::QFactoryLoader() checking directory path "/opt/qt5-rpi/plugins/generic" ...
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/generic/libqevdevkeyboardplugin.so"
Found metadata in lib /opt/qt5-rpi/plugins/generic/libqevdevkeyboardplugin.so, metadata=
{
"IID": "org.qt-project.Qt.QGenericPluginFactoryInterfac e",
"MetaData": {
"Keys": [
"EvdevKeyboard"
]
},
"className": "QEvdevKeyboardPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("evdevkeyboard")
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/generic/libqevdevmouseplugin.so"
Found metadata in lib /opt/qt5-rpi/plugins/generic/libqevdevmouseplugin.so, metadata=
{
"IID": "org.qt-project.Qt.QGenericPluginFactoryInterfac e",
"MetaData": {
"Keys": [
"EvdevMouse"
]
},
"className": "QEvdevMousePlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("evdevmouse")
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/generic/libqevdevtabletplugin.so"
Found metadata in lib /opt/qt5-rpi/plugins/generic/libqevdevtabletplugin.so, metadata=
{
"IID": "org.qt-project.Qt.QGenericPluginFactoryInterfac e",
"MetaData": {
"Keys": [
"EvdevTablet"
]
},
"className": "QEvdevTabletPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("evdevtablet")
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/generic/libqevdevtouchplugin.so"
Found metadata in lib /opt/qt5-rpi/plugins/generic/libqevdevtouchplugin.so, metadata=
{
"IID": "org.qt-project.Qt.QGenericPluginFactoryInterfac e",
"MetaData": {
"Keys": [
"EvdevTouch"
]
},
"className": "QEvdevTouchScreenPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("evdevtouch")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/untitled4/generic" ...
QFactoryLoader::QFactoryLoader() checking directory path "/opt/qt5-rpi/plugins/styles" ...
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/untitled4/styles" ...
QFactoryLoader::QFactoryLoader() checking directory path "/opt/qt5-rpi/plugins/iconengines" ...
QFactoryLoader::QFactoryLoader() looking at "/opt/qt5-rpi/plugins/iconengines/libqsvgicon.so"
Found metadata in lib /opt/qt5-rpi/plugins/iconengines/libqsvgicon.so, metadata=
{
"IID": "org.qt-project.Qt.QIconEngineFactoryInterface",
"MetaData": {
"Keys": [
"svg",
"svgz",
"svg.gz"
]
},
"className": "QSvgIconPlugin",
"debug": false,
"version": 328192
}


Got keys from plugin meta data ("svg", "svgz", "svg.gz")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/untitled4/iconengines" ...
Cant find EGLConfig, returning null config
Unable to find an X11 visual which matches EGL config 0
QLibraryPrivate::unload succeeded on "/opt/qt5-rpi/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so"
QLibraryPrivate::unload succeeded on "/opt/qt5-rpi/plugins/platforms/libqxcb.so"
QLibraryPrivate::unload succeeded on "Xcursor" (faked)


В прошлый раз при выводе этой же команды высвечивалось нечто вроде device0 не может быть открыт, или не найден или что-то в этом роде, поэтому я не сразу сообразил еще раз ей воспользоваться...

Перед этим я вчера применял настройки отсюда:
Кликните здесь для просмотра всего текста
http://stackoverflow.com/questions/28868963/qt-5-4-linux-touchscreen-input-with-tslib-on-raspberry-pi-failing-with-linuxfb-q

Вот так:
Кликните здесь для просмотра всего текста
export QT_DEBUG_PLUGINS=1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/arm-linux-gnueabihf/
export QT_PLUGIN_PATH=/usr/lib/plugins
export QT_QPA_FONTDIR=/usr/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/platforms
export QT_QPA_PLATFORM=eglfs
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
export TSLIB_TSEVENTTYPE='INPUT'
export TSLIB_CALIBFILE='/etc/pointercal'
export TSLIB_CONFFILE='/etc/ts.conf'
export TSLIB_CONSOLEDEVICE='none'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_PLUGINDIR='/usr/lib/ts'
export TSLIB_TSDEVICE='/dev/input/event0'


А сегодня дублировал так:
Кликните здесь для просмотра всего текста
export QT_DEBUG_PLUGINS=1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/arm-linux-gnueabihf/
export QT_PLUGIN_PATH=/usr/lib/plugins
export QT_QPA_FONTDIR=/usr/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/platforms
export QT_QPA_PLATFORM=xcb
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
05.06.2015, 12:16
А можете ради теста поменять все обратно и запустить приложение с флагом -platform xcb?
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
05.06.2015, 13:08  [ТС]
Извиняюсь, ошибся. Вот так надо:
Bash
1
2
3
4
5
6
7
export QT_DEBUG_PLUGINS=1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/arm-linux-gnueabihf/
export QT_PLUGIN_PATH=/usr/lib/plugins
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/platforms
export QT_QPA_PLATFORM=xcb
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
Для себя добавил это всё в $HOME/.bash_profile через нано-редактор.

Добавлено через 1 минуту
Вот как раз таки я нуб в линуксе. Я попросту не помню уже, что я поменял толком и как это вернуть. Но, давайте попробуем.

Как, например, откатить эти изменения?
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export QT_DEBUG_PLUGINS=1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/arm-linux-gnueabihf/
export QT_PLUGIN_PATH=/usr/lib/plugins
export QT_QPA_FONTDIR=/usr/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/platforms
export QT_QPA_PLATFORM=eglfs
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
export TSLIB_TSEVENTTYPE='INPUT'
export TSLIB_CALIBFILE='/etc/pointercal'
export TSLIB_CONFFILE='/etc/ts.conf'
export TSLIB_CONSOLEDEVICE='none'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_PLUGINDIR='/usr/lib/ts'
export TSLIB_TSDEVICE='/dev/input/event0'
По идее они должны откатываться каждый раз при перезагрузке, ведь они никуда еще не сохранены даже.

Добавлено через 27 минут
РЕЗУЛЬТАТ ЗАПУСКА ИЗ ТЕРМИНАЛА:
Bash
1
2
QXcbConnection: Could not connect to display
Aborted
(нечто похожее по-моему как раз вылезало в прошлый раз, но там не дисплей было написано, а device0, точно помню)

НИЖЕ В ИКСАХ:

Первый запуск - ошибка:
Bash
1
2
3
4
pi@raspberrypi ~ $ /home/pi/untitled4/untitled4 -platform xcb
Cant find EGLConfig, returning null config
Unable to find an X11 visual which matches EGL config 0
QXcbConnection: XCB error: 165 (Unknown), sequence: 153, resource id: 0, major code: 149 (Unknown), minor code: 20
Второй запуск сразу после первого - успешный:
Bash
1
2
3
pi@raspberrypi ~ $ /home/pi/untitled4/untitled4 -platform xcb
Cant find EGLConfig, returning null config
Unable to find an X11 visual which matches EGL config 0
Пока не понимаю, почему так...

Добавлено через 8 минут
Кстати говоря, при первом, неудачном, запуске, терминал повисает. Ощущение, будто приложение запущено, но вот окно появилось и тут же пропало, а терминал не отпускает =)
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
05.06.2015, 13:21
То есть второй раз запустилось и тачскрин работает?
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
05.06.2015, 14:47  [ТС]
Именно так. Пока не понял, почему так происходит.

Добавлено через 41 минуту
Нашел такой намек на решение проблемы:
Кликните здесь для просмотра всего текста
http://forum.qt.io/topic/30791/qxcbconnection-xcb-error-165-unknown


Но пока не получается. Иксы после внесения вообще не стартуют - выдает ошибку. Возможно потому, что я руками строго и вношу только эту секцию и только эту строку в файл. Больше там ничего нет...

Добавлено через 3 минуты
Еще одна проблема - каким образом можно заставить qmake видеть сторонние библиотеки? Пытаюсь скомпилировать родной проект, ругается на библиотеку:
Bash
1
2
root@debian:/home/gorbag/untitled1# qmake
Project ERROR: Unknown module(s) in QT: serialport
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
05.06.2015, 15:39
Возможно Qt изначально собирался без поддержки serialport
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
05.06.2015, 16:13  [ТС]
И снова веселье при сборке проекта под арм:
Bash
1
2
3
myserver.cpp: In member function ‘void MyServer::slotReadClient()’:
myserver.cpp:50:19: error: ‘Qt_5_4’ is not a member of ‘QDataStream’
     in.setVersion(QDataStream::Qt_5_4);
Кто сталкивался и быстро сможет подсказать =)

Добавлено через 1 минуту
Цитата Сообщение от Flassie Посмотреть сообщение
Возможно Qt изначально собирался без поддержки serialport
Скорее всего так и есть, но видимо я что-то делал не так. Сейчас этой ошибки нет и qmake именно для арм линукса вызывается. Ошибка выше...

Добавлено через 14 минут
Хм... Поправил версию с 5_4 на 4_5 по книге Шлее - пропустило.

Компилим дальше. Выхлоп:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/mnt/rpi-rootfs/opt/vc/lib -Wl,-rpath-link,/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/mnt/rpi-rootfs/lib/arm-linux-gnueabihf --sysroot=/mnt/rpi-rootfs -Wl,-O1 -Wl,-rpath,/opt/qt5-rpi/lib -Wl,-rpath,/usr/lib/i386-linux-gnu -o untitled1 main.o mainwindow.o mythread.o autorisationform.o inputerror.o work.o virtualkeyboard.o mousefilter.o manualinputform.o mousefilter2.o myserver.o barcodethread.o digitalkeyboard.o mousefilter3.o mousefilter4.o newtonthread.o moc_mainwindow.o moc_mythread.o moc_autorisationform.o moc_inputerror.o moc_work.o moc_virtualkeyboard.o moc_mousefilter.o moc_manualinputform.o moc_mousefilter2.o moc_myserver.o moc_barcodethread.o moc_digitalkeyboard.o moc_mousefilter3.o moc_mousefilter4.o moc_newtonthread.o   -L/mnt/rpi-rootfs/opt/vc/lib -L/home/gorbag/untitled1/ -lhidapi-hidraw -L/mnt/rpi-rootfs/opt/qt5-rpi/lib -lQt5Widgets -L/opt/qt5-rpi/lib -L/lib -lQt5SerialPort -ludev -lQt5Network -lQt5Xml -lQt5Gui -lQt5Core -lGLESv2 -lpthread 
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: main.o: Relocations in generic ELF (EM: 3)
main.o: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status
make: *** [untitled1] Ошибка 1
root@debian:/home/gorbag/untitled1#


Добавлено через 13 минут
Догадался удалить собранные в прошлый раз до появления ошибки файлы. Запустил заново:
Bash
1
2
3
4
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/mnt/rpi-rootfs/opt/vc/lib -Wl,-rpath-link,/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/mnt/rpi-rootfs/lib/arm-linux-gnueabihf --sysroot=/mnt/rpi-rootfs -Wl,-O1 -Wl,-rpath,/opt/qt5-rpi/lib -Wl,-rpath,/usr/lib/i386-linux-gnu -o untitled1 main.o mainwindow.o mythread.o autorisationform.o inputerror.o work.o virtualkeyboard.o mousefilter.o manualinputform.o mousefilter2.o myserver.o barcodethread.o digitalkeyboard.o mousefilter3.o mousefilter4.o newtonthread.o moc_mainwindow.o moc_mythread.o moc_autorisationform.o moc_inputerror.o moc_work.o moc_virtualkeyboard.o moc_mousefilter.o moc_manualinputform.o moc_mousefilter2.o moc_myserver.o moc_barcodethread.o moc_digitalkeyboard.o moc_mousefilter3.o moc_mousefilter4.o moc_newtonthread.o   -L/mnt/rpi-rootfs/opt/vc/lib -L/home/gorbag/untitled1/ -lhidapi-hidraw -L/mnt/rpi-rootfs/opt/qt5-rpi/lib -lQt5Widgets -L/opt/qt5-rpi/lib -L/lib -lQt5SerialPort -ludev -lQt5Network -lQt5Xml -lQt5Gui -lQt5Core -lGLESv2 -lpthread 
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lhidapi-hidraw
collect2: error: ld returned 1 exit status
make: *** [untitled1] Ошибка 1
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
05.06.2015, 21:40
Цитата Сообщение от Горбаг Посмотреть сообщение
cannot find -lhidapi-hidraw
Решайте
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
08.06.2015, 15:41  [ТС]
Все-таки я определенно застрял и мне требуется совет.

Предположим, что проект состоит из файлов main.cpp, mainwindow.cpp и mainwindow.h. Эти файлы были созданы через проект Qt Creator.

В mainwindow.cpp я работаю с usb, получаю и передаю данные. Для этой цели путем проб и ошибок была выбрана библиотека libhidapi-hidraw. Сама библиотека по-моему установлена где-то в системе, но при этом хэдер бибиотеки (hidapi.h) валяется в корне проекта и подключен следующим образом:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#-------------------------------------------------
#
# Project created by QtCreator 2015-04-14T14:20:06
#
#-------------------------------------------------
 
QT  += core gui
QT  += xml
QT  += network
QT  += serialport
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = untitled1
TEMPLATE = app
 
unix:!macx: LIBS += -L$$PWD/ -lhidapi-hidraw
 
SOURCES += main.cpp\
        mainwindow.cpp \
 
HEADERS  += mainwindow.h \
 
FORMS    += mainwindow.ui \
 
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/
Все файлы проекта компилирую через qmake для arm-linux. qmake проходит. А вот make выдает ошибку:
Bash
1
2
3
4
5
6
7
3
4
 
    
 
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/mnt/rpi-rootfs/opt/vc/lib -Wl,-rpath-link,/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/mnt/rpi-rootfs/lib/arm-linux-gnueabihf --sysroot=/mnt/rpi-rootfs -Wl,-O1 -Wl,-rpath,/opt/qt5-rpi/lib -Wl,-rpath,/usr/lib/i386-linux-gnu -o untitled1 main.o mainwindow.o mythread.o autorisationform.o inputerror.o work.o virtualkeyboard.o mousefilter.o manualinputform.o mousefilter2.o myserver.o barcodethread.o digitalkeyboard.o mousefilter3.o mousefilter4.o newtonthread.o moc_mainwindow.o moc_mythread.o moc_autorisationform.o moc_inputerror.o moc_work.o moc_virtualkeyboard.o moc_mousefilter.o moc_manualinputform.o moc_mousefilter2.o moc_myserver.o moc_barcodethread.o moc_digitalkeyboard.o moc_mousefilter3.o moc_mousefilter4.o moc_newtonthread.o   -L/mnt/rpi-rootfs/opt/vc/lib -L/home/gorbag/untitled1/ -lhidapi-hidraw -L/mnt/rpi-rootfs/opt/qt5-rpi/lib -lQt5Widgets -L/opt/qt5-rpi/lib -L/lib -lQt5SerialPort -ludev -lQt5Network -lQt5Xml -lQt5Gui -lQt5Core -lGLESv2 -lpthread 
/root/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lhidapi-hidraw
Отсюда вопросы:
1) как мне правильно собирать проект в таком случае, чтобы hidapi.h подключалось именно в .pro файле проекта?
2) Правильно ли я понимаю, что мне просто нужно собрать Hidapi библиотеку именно на распберри и положить собранные файлы в папке с проектом для последующей компиляции? Ведь по идее хидапи установлена на дебиан сейчас под i386 и может поэтому и не собирается?

Неужели никто не делал перенос своих приложений, использующих сторонние библиотеки (не обязательно ведь hidapi, мне то нужно просто понять принцип) на другую платфому?
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
08.06.2015, 16:17
Все точно так же, как вы делали с Qt. Qt - тоже набор библиотек. Что вы с ним делали? Вы его кросс-компилировали

на raspberry:
apt-cache search hidapi
В выведенных результатах найдите dev пакеты и бинарники. Поставьте их
Из .pro можно будет убрать добавление библиотеки этой конкретно, но файлы этой библиотеки можно будет использовать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.06.2015, 16:17

Сборка проекта под Linux
Есть проект. Написан в Visual Studio, под Windows. Сейчас появилась необходимость собирать проект в зависимости от входных...

Сборка проекта под Windows, Linux и MacOS и тестирование
Есть приложение с графическим интерфейсом которое нужно собрать под поддерживаемые версии Windows, Linux и MacOS и протестировать их на...

Сборка проекта для arm в qt
Доброго времени суток. Пытаюсь собрать проект для камня f103c8t6 в qt. После подключения компилятора и отладчика попробовал собрать проект,...

сборка Qt на windows для целевой машине на arm linux
возможно ли собрать Qt на windows (хост-машина) для кросс-компиляции под linux arm (целевая машина) если да, то какие компиляторы и...

Сборка под ARM на netbeans
Пытаюсь скомпилировать проект под ARM архитектура. ОС: Debian; IDE: Netbeans 8.1. Сам проект написан на с++, но выдает ошибки. Был...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru