Ошибка компоновки при кросс-компиляции Qt5 для Beaglebone - PullRequest
0 голосов
/ 07 февраля 2019

Уважаемое сообщество stackoverflow.

Я кросс-компилирую Qt 5.12 для моего Beaglebone Black с поддержкой EGL.Основной операционной системой является Ubuntu 18.04.1 LTS (x64), работающая на виртуальной машине.Я установил любые возможные зависимости (я мог найти в разных сообщениях) на цель (и некоторые на хосте) и скопировал sysroot на хост.В основном я следовал этому руководству, которое изначально предназначено для RPi2: https://wiki.qt.io/RaspberryPi2EGLFS Пакет Qt5base компилируется нормально, по крайней мере, я так думаю.Он делает и устанавливает, но есть некоторые ошибки в тестах конфигурации.Я вернусь к ним позже.

Теперь я тоже пытаюсь собрать qtdeclarative.Qmake работает без ошибок, но make завершается неудачно с ошибкой компоновки.libQt5Core.so не может найти некоторые ссылки, потому что некоторые зависимости не найдены.Например, libicudata.so.57.Конечно, я проверил, что они находятся в нужном месте под sysroot, и они есть.Я предполагаю, что что-то не так с исходной сборкой qtbase, потому что у меня были похожие ошибки в некоторых тестах конфигурации (но с разными библиотеками), и если я пытаюсь создать пример приложения, то это тоже самое.

Вот некоторыеинформация ...

Командная строка конфигурации из сборки qtbase:

Command line: -release -opengl es2 -device linux-beagleboard-g++ -device-option CROSS_COMPILE=/home/martin/beaglebone/tools/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /home/martin/beaglebone/sysroot -opensource -confirm-license -make libs -make tools -prefix /usr/local/qt5bbb -extprefix /home/martin/beaglebone/qt5build/qt5bbb -hostprefix /home/martin/beaglebone/qt5build/qt5 -qt-zlib -qt-libpng -no-use-gold-linker -v

Дамп всех постоянных переменных qmake:

~/beaglebone/qt5build/qt5/bin/qmake -query
QT_SYSROOT:/home/martin/beaglebone/sysroot
QT_INSTALL_PREFIX:/home/martin/beaglebone/qt5build/qt5bbb
QT_INSTALL_PREFIX/dev:/usr/local/qt5bbb
QT_INSTALL_ARCHDATA:/home/martin/beaglebone/qt5build/qt5bbb
QT_INSTALL_ARCHDATA/dev:/usr/local/qt5bbb
QT_INSTALL_DATA:/home/martin/beaglebone/qt5build/qt5bbb
QT_INSTALL_DATA/dev:/usr/local/qt5bbb
QT_INSTALL_DOCS:/home/martin/beaglebone/qt5build/qt5bbb/doc
QT_INSTALL_DOCS/dev:/usr/local/qt5bbb/doc
QT_INSTALL_HEADERS:/home/martin/beaglebone/qt5build/qt5bbb/include
QT_INSTALL_HEADERS/dev:/usr/local/qt5bbb/include
QT_INSTALL_LIBS:/home/martin/beaglebone/qt5build/qt5bbb/lib
QT_INSTALL_LIBS/dev:/usr/local/qt5bbb/lib
QT_INSTALL_LIBEXECS:/home/martin/beaglebone/qt5build/qt5bbb/libexec
QT_INSTALL_LIBEXECS/dev:/usr/local/qt5bbb/libexec
QT_INSTALL_BINS:/home/martin/beaglebone/qt5build/qt5bbb/bin
QT_INSTALL_BINS/dev:/usr/local/qt5bbb/bin
QT_INSTALL_TESTS:/home/martin/beaglebone/qt5build/qt5bbb/tests
QT_INSTALL_TESTS/dev:/usr/local/qt5bbb/tests
QT_INSTALL_PLUGINS:/home/martin/beaglebone/qt5build/qt5bbb/plugins
QT_INSTALL_PLUGINS/dev:/usr/local/qt5bbb/plugins
QT_INSTALL_IMPORTS:/home/martin/beaglebone/qt5build/qt5bbb/imports
QT_INSTALL_IMPORTS/dev:/usr/local/qt5bbb/imports
QT_INSTALL_QML:/home/martin/beaglebone/qt5build/qt5bbb/qml
QT_INSTALL_QML/dev:/usr/local/qt5bbb/qml
QT_INSTALL_TRANSLATIONS:/home/martin/beaglebone/qt5build/qt5bbb/translations
QT_INSTALL_TRANSLATIONS/dev:/usr/local/qt5bbb/translations
QT_INSTALL_CONFIGURATION:/home/martin/beaglebone/qt5build/qt5bbb/etc/xdg
QT_INSTALL_CONFIGURATION/dev:/usr/local/qt5bbb/etc/xdg
QT_INSTALL_EXAMPLES:/home/martin/beaglebone/qt5build/qt5bbb/examples
QT_INSTALL_EXAMPLES/dev:/usr/local/qt5bbb/examples
QT_INSTALL_DEMOS:/home/martin/beaglebone/qt5build/qt5bbb/examples
QT_INSTALL_DEMOS/dev:/usr/local/qt5bbb/examples
QT_HOST_PREFIX:/home/martin/beaglebone/qt5build/qt5
QT_HOST_DATA:/home/martin/beaglebone/qt5build/qt5
QT_HOST_BINS:/home/martin/beaglebone/qt5build/qt5/bin
QT_HOST_LIBS:/home/martin/beaglebone/qt5build/qt5/lib
QMAKE_SPEC:linux-g++
QMAKE_XSPEC:devices/linux-beagleboard-g++
QMAKE_VERSION:3.1
QT_VERSION:5.12.2

Фрагмент с ошибкойqtdeclarative build:

/home/martin/beaglebone/tools/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.4.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libicudata.so.57, needed by /home/martin/beaglebone/qt5build/qt5bbb/lib/libQt5Core.so, not found (try using -rpath or -rpath-link)
/home/martin/beaglebone/qt5build/qt5bbb/lib/libQt5Core.so: Warnung: undefinierter Verweis auf »ucol_getSortKey_57«

Заголовок упомянутого так:

readelf -d /home/martin/beaglebone/qt5build/qt5bbb/lib/libQt5Core.so

Dynamic section at offset 0x4125b0 contains 37 entries:
  Tag       Typ                          Name/Wert
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libpthread.so.0]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libicui18n.so.57]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libicuuc.so.57]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libicudata.so.57]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [librt.so.1]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libdl.so.2]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libstdc++.so.6]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libm.so.6]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [libc.so.6]
 0x00000001 (NEEDED)                     Gemeinsame Bibliothek [ld-linux-armhf.so.3]
 0x0000000e (SONAME)                     soname der Bibliothek: [libQt5Core.so.5]
 0x0000000c (INIT)                       0x6ab1c
 0x0000000d (FINI)                       0x298ed0
 0x00000019 (INIT_ARRAY)                 0x41c000
 0x0000001b (INIT_ARRAYSZ)               16 (Bytes)
 0x0000001a (FINI_ARRAY)                 0x41c010
 0x0000001c (FINI_ARRAYSZ)               12 (Bytes)
 0x00000004 (HASH)                       0x158
 0x00000005 (STRTAB)                     0x20c6c
 0x00000006 (SYMTAB)                     0x838c
 0x0000000a (STRSZ)                      228634 (Bytes)
 0x0000000b (SYMENT)                     16 (Bytes)
 0x00000003 (PLTGOT)                     0x4226f8
 0x00000002 (PLTRELSZ)                   24664 (Bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0x64ac4
 0x00000011 (REL)                        0x5beac
 0x00000012 (RELSZ)                      35864 (Bytes)
 0x00000013 (RELENT)                     8 (Bytes)
 0x6ffffffc (VERDEF)                     0x5baa4
 0x6ffffffd (VERDEFNUM)                  16
 0x6ffffffe (VERNEED)                    0x5bccc
 0x6fffffff (VERNEEDNUM)                 8
 0x6ffffff0 (VERSYM)                     0x58986
 0x6ffffffa (RELCOUNT)                   1928
 0x00000000 (NULL)                       0x0

Поиск локализации для libicudata:

locate libicudata.so.57
/home/martin/beaglebone/sysroot/lib/arm-linux-gnueabihf/libicudata.so.57
/home/martin/beaglebone/sysroot/usr/lib/arm-linux-gnueabihf/libicudata.so.57
/home/martin/beaglebone/sysroot/usr/lib/arm-linux-gnueabihf/libicudata.so.57.1
/home/martin/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libicudata.so.57
/home/martin/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libicudata.so.57.1

Как компоновщик ищет зависимостидинамических библиотек?Может ли это быть "двойное совпадение", потому что у меня также есть системный корень RPi3 на том же хосте?Я могу предоставить журнал конфигурации из сборки qtbase, если это будет полезно.

Спасибо и наилучшие пожелания, Мартин.

1 Ответ

0 голосов
/ 09 августа 2019

Я снова и снова испытывал одну и ту же боль.Используйте chroot и скомпилируйте там.Вот мой весь пост

...