Talk:Cross-Compile Qt 6 for Raspberry Pi: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This discussion page is intended for talks about improving the article.
This discussion page is intended for talks about improving the article. Feel free to suggest anything to make the page better! --[[User:Uraihan|Uraihan]] ([[User talk:Uraihan|talk]]) 15:14, 22 June 2022 (UTC)


<h2>Issue with libdbus</h2>
== Issues ==
During the testing process, we found a compilation error related to libdbus.


<syntaxhighlight lang="shell">
This link is not reachable (inserted in the command): git clone ssh://codereview.qt-project.org/qt/qt5
FAILED: qtbase/lib/libQt6DBus.so.6.3.0 qtbase/src/dbus/DBus.version /home/uraihan/qt-cross/qtbase/src/dbus/DBus.version
cd /home/uraihan/qt5/qtbase/src/dbus && /usr/bin/perl /home/uraihan/qt5/qtbase/mkspecs/features/data/unix/findclasslist.pl < /home/uraihan/qt-cross/qtbase/src/dbus/DBus.version.in > /home/uraihan/qt-cross/qtbase/src/dbus/DBus.version && cd /home/uraihan/qt-cross && /usr/bin/aarch64-linux-gnu-g++-9 --sysroot=/home/uraihan/rpi-sysroot -fPIC -I/home/uraihan/rpi-sysroot/usr/include -pipe -O2  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed  -Wl,--version-script,/home/uraihan/qt-cross/qtbase/src/dbus/DBus.version -Wl,--no-undefined -Wl,--enable-new-dtags -shared -Wl,-soname,libQt6DBus.so.6 -o qtbase/lib/libQt6DBus.so.6.3.0 qtbase/src/dbus/CMakeFiles/DBus.dir/DBus_autogen/mocs_compilation.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbus_symbols.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusabstractadaptor.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusabstractinterface.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusargument.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusconnection.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusconnectioninterface.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbuscontext.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbuserror.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusextratypes.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusintegrator.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusinterface.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusinternalfilters.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusintrospection.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusmessage.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusmetaobject.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusmetatype.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusmisc.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbuspendingcall.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbuspendingreply.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusreply.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusserver.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusservicewatcher.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusunixfiledescriptor.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusutil.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusvirtualobject.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusxmlgenerator.cpp.o qtbase/src/dbus/CMakeFiles/DBus.dir/qdbusxmlparser.cpp.o  -Wl,-rpath,/home/uraihan/rpi-sysroot:/home/uraihan/qt-cross/qtbase/lib:  /home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a  qtbase/lib/libQt6Core.so.6.3.0  -lpthread && :
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-message.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `dbus_message_unref' which may bind externally can not be used when making a shared object; recompile with -fPIC
/home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-message.o): in function `_dbus_message_loader_unref':
(.text+0x59d8): dangerous relocation: unsupported relocation
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-timeout.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_dbus_timeout_unref' which may bind externally can not be used when making a shared object; recompile with -fPIC
/home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-timeout.o): in function `_dbus_timeout_list_free':
(.text+0x130): dangerous relocation: unsupported relocation
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-watch.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_dbus_watch_unref' which may bind externally can not be used when making a shared object; recompile with -fPIC
/home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-watch.o): in function `_dbus_watch_list_free':
(.text+0x1b0): dangerous relocation: unsupported relocation
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-sysdeps-unix.o): in function `_dbus_listen_systemd_sockets':
(.text+0x204c): undefined reference to `sd_listen_fds'
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: (.text+0x2090): undefined reference to `sd_is_socket'
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-userdb.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_dbus_group_info_unref' which may bind externally can not be used when making a shared object; recompile with -fPIC
/home/uraihan/rpi-sysroot/usr/lib/aarch64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-userdb.o): in function `_dbus_user_database_new':
(.text+0x4e8): dangerous relocation: unsupported relocation
collect2: error: ld returned 1 exit status
[563/4792] Building CXX object qtbase/src/testlib/CMakeFiles/Test.dir/qjunittestlogger.cpp.o
ninja: build stopped: subcommand failed.
</syntaxhighlight>


It was found that the libdbus inside the initial sysroot was not a dynamically shared objects. As a temporary fix, it was decided to temporarily exclude this feature from the configuration by including <code>-DFEATURE_dbus=OFF</code> flag, but this is fixable by doing clean reinstall of Raspberry Pi OS.
ubunutu 22.04 could not find libgst-dev
 
== Errors  in the page ==
 
 
Following are the errors found in the step-by-step guide:
 
1. In the command: mkdir qt-host qt-raspi qthost-build qtpi-build, folder created is 'qthost-build' whereas later folder name is 'qt-hostbuild'.
 
2. In the command: rsync -avzS --rsync-path="rsync" --delete <pi_username>@<pi_ip_address>:/lib* rpi-sysroot/lib,  the correction is 'pi_ip_address>:/lib/*'.(Forward Slash is missing).
 
3. Commands:'mkdir usr' and 'mkdir opt' are repeated unnecessarily as these folders are already created earlier by the command 'mkdir rpi-sysroot rpi-sysroot/usr rpi-sysroot/opt' on the host machine.
 
4. Command: 'cd $HOME/rpi-sysroot' is not needed as the following rsync commands do not work in the 'rpi-sysroot' folder.
 
5. The file location of "toolchain.cmake" is not clearly mentioned. It is to be saved in 'Home' folder.

Latest revision as of 04:12, 1 May 2024

This discussion page is intended for talks about improving the article. Feel free to suggest anything to make the page better! --Uraihan (talk) 15:14, 22 June 2022 (UTC)

Issues

This link is not reachable (inserted in the command): git clone ssh://codereview.qt-project.org/qt/qt5

ubunutu 22.04 could not find libgst-dev

Errors in the page

Following are the errors found in the step-by-step guide:

1. In the command: mkdir qt-host qt-raspi qthost-build qtpi-build, folder created is 'qthost-build' whereas later folder name is 'qt-hostbuild'.

2. In the command: rsync -avzS --rsync-path="rsync" --delete <pi_username>@<pi_ip_address>:/lib* rpi-sysroot/lib, the correction is 'pi_ip_address>:/lib/*'.(Forward Slash is missing).

3. Commands:'mkdir usr' and 'mkdir opt' are repeated unnecessarily as these folders are already created earlier by the command 'mkdir rpi-sysroot rpi-sysroot/usr rpi-sysroot/opt' on the host machine.

4. Command: 'cd $HOME/rpi-sysroot' is not needed as the following rsync commands do not work in the 'rpi-sysroot' folder.

5. The file location of "toolchain.cmake" is not clearly mentioned. It is to be saved in 'Home' folder.