Sign inSign up

avolphen/arm64-gnu-cpp

By avolphen

•Updated 2 days ago

C++ Qt 6.*.* for Ubuntu 24.04 Linux aarch64 using GNU.

Image
Languages & frameworks
Integration & delivery
Developer tools
0

10K+

avolphen/arm64-gnu-cpp repository overview

⁠C++ Qt Arm64/Aarch64 Build Image

Source for image builds is here⁠.
It is built using the cpp-builder.sh shell script.

⁠Primary Goal

Create a comprehensive Docker-based C++ build environment.
Optional is the Qt library which is custom compiled with the toolchains from this image and can be downloaded from a Nexus server or your own webserver.

⁠Changes from Before

Previously images with the Qt libraries on board were built but were not easy to maintain.
Now Qt libraries are downloaded from a webserver using an environment variable picked up in the entrypoint script.
To speed up the build-process, the container can be started in the background using the --detach option and attached for executing a command preventing downloading the Qt libraries over and over again.

⁠Toolchain Support Matrix

ToolchainAbbrev.LinuxWindowsWineDckrDescription
GNU aarch64gnu✓¹✗✗✓Native Linux GNU compiler for aarch64)

Legend:

  • ✓ = Supported and tested.
  • ✗ = Not supported.
  • 1 = Only available on Linux aarch64.
  • 2 = Only available on Linux x86_64.
  • 3 = Not useful, a cross-compiler is available on Linux x86_64.

The system enables consistent, reproducible C++ builds across platforms while maintaining developer workflow flexibility.

⁠Python Build Script

The build.py script from the CMake Library⁠ is responsible for automating the build process of C++ projects using CMake.
The script provides a bootstrap option for creating a new C++ boilerplate project. It provides a convenient interface for developers to execute build commands.
The same script can be used for both Linux and Windows, including CI/CD-pipelines.
See the Python script in action see the YouTube⁠ channel.

Good chance the main branch is not up to date and uses a dev or fix branch.

⁠Running Standalone without the Project

When running a container using this image, you need to start it using these options to enable fuse-zip mounts used for the three different platforms of Qt frameworks.
Running as root --user 0:0 is needed to change from user user the uid and gid.

--user 0:0
--net host
--cap-add SYS_ADMIN
--device /dev/fuse
--security-opt apparmor:unconfined

Additional options:

  • --volume ${PWD}:/mnt/project : Makes the container run with the uid and gid of the project directory owner.
  • --env LOCAL_USER=<uid>:<gid> : Makes the container run with the given uid and gid.
  • --env DISPLAY --volume ${HOME}/.Xauthority:/home/user/.Xauthority:ro : Tto allow hosts X-server access for X11 GUI apps.
  • --env SF_QT_VERSION : Set the Qt version to download for all toolchains.
  • --env SF_QT_DOWNLOAD_BASE : Set the base URL for downloading Qt framework libraries.

The filenames used for downloading Qt framework libraries are:

Formatted as qt-<platform>-<arch>-<qt-version>.tar.gz

  • qt-lnx-aarch64-6.10.1.tar.gz
  • qt-lnx-aarch64-6.10.3.tar.gz
  • qt-lnx-aarch64-6.12.0.tar.gz

⁠Versions of Tools

Versions of some of the tools which are available in this image.

ApplicationVersion
Ubuntu24.04
Git2.55.0
GCC13.3.0
C++13.3.0
GCC-1313.3.0
C++-1313.3.0
Aarch64 GCC13.3.0
Aarch64 G++13.3.0
MinGW GCC13-posix
MinGW C++13-posix
CMake4.4.4
GNU-Make4.3
GNU-Patch2.7.6
Ninja-Build1.11.1
CLang-Format18.1.3
Gdb15.1
GNU-Linker2.42
DoxyGen1.9.8
Graphviz2.43.0
Exif-Tool12.76
Dpkg1.22.6
RPM4.18.2
OpenJDK21.0.12.1
BindFS1.14.7
Fuse-zip0.6.0
JQ1.7
Gcovr8.6
Python33.12.3

Tag summary

Content type

Image

Digest

sha256:e384a83d9…

Size

821.7 MB

Last updated

2 days ago

docker pull avolphen/arm64-gnu-cpp