Assistance on building Qt SDK from source for Ubuntu 22.04 on aarch64
-
Hello,
We are using Jetson Orin Nano companion computer in our application development for robotics application. The Jetson Orin Nano comes with QLibc
jetson@ubuntu:~/Downloads$ ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3.11) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.During the Qt installation, I run into version mismatch.
/home/jetson/Qt/6.10.1/gcc_arm64/libexec/qmlimportscanner: /lib/aarch64-linux-gnu/libm.so.6: version GLIBC_2.38’ not found (required by /home/jetson/Qt/6.10.1/gcc_arm64/libexec/../lib/libQt6Qml.so.6)
/home/jetson/Qt/6.10.1/gcc_arm64/libexec/qmlimportscanner: /lib/aarch64-linux-gnu/libc.so.6: version GLIBC_2.38’ not found (required by /home/jetson/Qt/6.10.1/gcc_arm64/libexec/../lib/libQt6Network.so.6)
Therefore I believe I have to rebuild Qt for 22.04 on aarch64 from the source.
I came across this wiki post to build Qt from source on Ubuntu 22.04.
https://wiki.qt.io/Building_Qt_Creator_from_Git_on_Ubuntu_22.04
I want to confirm from you all if these are still the correct steps to proceed on my environment.
Thanks for your help,
Mustafa -
Hi and welcome to devnet,
I would say no since you want to build Qt but these are instructions for Qt Creator.
You are likely looking for this page: https://wiki.qt.io/Building_Qt_6_from_Git -
Thank you @SGaist I will follow the instructions. While I was validating the versions, I have the following C++ on my environment. The wiki is mentioning C++17.
jetson@ubuntu:~$ g++ --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.jetson@ubuntu:~$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -
On this step
../configure -prefix /home/jetson/Qt
I am seeing the following error.
-- Configuring submodule 'qttools'
CMake Error at /usr/lib/llvm-14/lib/cmake/clang/ClangTargets.cmake:750 (message):
The imported target "clangBasic" references the file"/usr/lib/llvm-14/lib/libclangBasic.a"but this file does not exist. Possible reasons include:
-
The file was deleted, renamed, or moved to another location.
-
An install or uninstall procedure did not complete successfully.
-
The installation package was faulty and contained
"/usr/lib/llvm-14/lib/cmake/clang/ClangTargets.cmake"
but not all the files it references.
Call Stack (most recent call first):
/usr/lib/cmake/clang-14/ClangConfig.cmake:19 (include)
qttools/cmake/FindWrapLibClang.cmake:17 (find_package)
qtbase/cmake/QtFindPackageHelpers.cmake:147 (find_package)
qttools/configure.cmake:20 (qt_find_package)
qtbase/cmake/QtFeature.cmake:592 (include)
qttools/src/CMakeLists.txt:18 (qt_feature_evaluate_features)-- Configuring incomplete, errors occurred!
CMake Error at /home/jetson/git/qt6/qtbase/cmake/QtProcessConfigureArgs.cmake:993 (message):
CMake exited with code 1. -
-
I Installed the missing development package: the necessary package is libclang-dev or the version-specific libclang-14-dev. Making progress ...
-
I run into the following error and build. I did some search in Google but I wasn't able to determine the exact cause of this error.
At global scope:
cc1plus: note: unrecognized command-line option ‘-Wno-changes-meaning’ may have been intended to silence earlier diagnostics
[829/1011] CXX obj/third_party/pdfium/core/fxcodec/fxcodec/cjpx_decoder.o
FAILED: obj/third_party/pdfium/core/fxcodec/fxcodec/cjpx_decoder.o
/usr/bin/c++ -MD -MF obj/third_party/pdfium/core/fxcodec/fxcodec/cjpx_decoder.o.d -DUSE_AURA=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D__ARM_NEON__=1 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -D_GLIBCXX_ASSERTIONS=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DPDF_USE_PARTITION_ALLOC -DFT_CONFIG_MODULES_H="freetype-custom/freetype/config/ftmodule.h" -DFT_CONFIG_OPTIONS_H="freetype-custom/freetype/config/ftoption.h" -DPDFIUM_REQUIRED_MODULES -DCHROMIUM_RESTRICT_VISIBILITY -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUSE_SYSTEM_LIBOPENJPEG2 -DUSE_SYSTEM_ZLIB -DUSE_LIBJPEG_TURBO=1 -DMANGLE_JPEG_NAMES -Igen -I../../../3rdparty/chromium -I../../../3rdparty/chromium/third_party/pdfium -I../../../3rdparty/chromium/third_party/freetype/include -I../../../3rdparty/chromium/third_party/freetype/include/freetype-custom -I../../../3rdparty/chromium/third_party/freetype/src/include -I../../../3rdparty/chromium/third_party/harfbuzz-ng/src/src -I../../../3rdparty/chromium/third_party/abseil-cpp -I../../../3rdparty/chromium/third_party/icu/source/common -I../../../3rdparty/chromium/third_party/icu/source/i18n -I../../../3rdparty/chromium/base/allocator/partition_allocator/src -Igen/base/allocator/partition_allocator/src -I../../../3rdparty/chromium/third_party/libjpeg_turbo -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-misleading-indentation -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -fwrapv -fno-ident -fno-strict-aliasing -fstack-protector -Wno-unknown-pragmas -Wno-address -Wno-parentheses -Wno-sign-compare -Wno-stringop-overflow -Wno-stringop-overread -Wno-psabi -Wno-multichar -Wno-format-zero-length -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -mbranch-protection=standard -O2 -fdata-sections -ffunction-sections -fno-math-errno -fno-omit-frame-pointer -g0 -fvisibility=hidden -Wnarrowing -Wno-return-type -I/usr/include/openjpeg-2.4 -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -Wno-invalid-offsetof -Wno-changes-meaning -Wno-deprecated-copy -Wno-expansion-to-defined -std=gnu++20 -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c ../../../3rdparty/chromium/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp -o obj/third_party/pdfium/core/fxcodec/fxcodec/cjpx_decoder.o
In file included from ../../../3rdparty/chromium/third_party/pdfium/core/fxcrt/raw_span.h:8,
from ../../../3rdparty/chromium/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.h:14,
from ../../../3rdparty/chromium/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp:7:
../../../3rdparty/chromium/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp: In member function ‘bool fxcodec::CJPX_Decoder::Init(pdfium::span<const unsigned char>, uint8_t, bool)’:
../../../3rdparty/chromium/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp:479:11: error: ‘opj_decoder_set_strict_mode’ was not declared in this scope
479 | CHECK(opj_decoder_set_strict_mode(m_Codec.get(), false));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../3rdparty/chromium/third_party/pdfium/core/fxcrt/compiler_specific.h:33:41: note: in definition of macro ‘UNLIKELY’
33 | #define UNLIKELY(x) __builtin_expect(!!(x), 0)
| ^
../../../3rdparty/chromium/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp:479:5: note: in expansion of macro ‘CHECK’
479 | CHECK(opj_decoder_set_strict_mode(m_Codec.get(), false));
| ^~~~~
At global scope:
cc1plus: note: unrecognized command-line option ‘-Wno-changes-meaning’ may have been intended to silence earlier diagnostics
[836/1011] CXX obj/third_party/pdfium/core/fxcodec/fxcodec/flatemodule.o
ninja: build stopped: subcommand failed.
[11470/12986] Building CXX object qtscxml/tools/qscxmlc/CMakeFiles/qscxmlc.dir/generator.cpp.o
FAILED: qtwebengine/src/pdf/Release/aarch64/QtPdf.stamp qtwebengine/src/pdf/Release/aarch64/QtPdf /home/jetson/git/qt6/qtwebengine/src/pdf/Release/aarch64/QtPdf.stamp /home/jetson/git/qt6/qtwebengine/src/pdf/Release/aarch64/QtPdf
cd /home/jetson/git/qt6/qtwebengine/src/pdf && /usr/bin/ninja -C /home/jetson/git/qt6/qtwebengine/src/pdf/Release/aarch64 QtPdf
[11478/12986] Building CXX object qtscxml/src/scxmlqml/CMakeFiles/ScxmlQml.dir/cmake_pch.hxx.gch
ninja: build stopped: subcommand failed. -
You should use only one thread to see exactly what is going wrong.
That said, it looks like it happens in the QtWebEngine module. Unless you actually need it, I would recommend leaving it out. It's a massive module that is usually hard to build.