avolphen/amd64-gnu-cpp

By avolphen

Updated 3 months ago

C++ Qt 6.*.* for Ubuntu 24.04 Linux (x86_64, aarch64) and Windows (x86_64) using GNU and MinGW.

Image
Languages & frameworks
Integration & delivery
Developer tools
0

10K+

avolphen/amd64-gnu-cpp repository overview

C++ Qt amd64/x86_64 Build Image

Source for image builds is here.

Primary Goal

Create a comprehensive Docker-based C++ build environment that supports:

  1. Multi-platform C++ compilation

    • Native Linux (x86_64 and aarch64)
    • Windows cross-compilation (x86_64) using the Linux MinGW cross-compiler
    • Windows compilation (using MinGW and MSVC via Wine)
  2. Qt framework support

    • Building Qt from source for multiple platforms
    • Packaging and hosting Qt libraries (versions like 6.8.1, 6.9.1, 6.10.1) for different architectures
    • Cross-platform Qt development (Linux → Windows)
  3. Developer tooling

    • JetBrains CLion integration for containerized development
    • Support for debugging and running GUI applications via X11
    • The Python tool is available in native Linux and also in Wine to support cross-platform build-scripts.

Key Technical Features

  • Base image: Ubuntu 24.04 LTS with comprehensive C++ toolchain
  • Cross-compilation: aarch64 and Windows (x86_64) support from x86_64 hosts
  • Wine integration: For Windows tooling, MSVC and MinGW compilation on Linux
  • Library management: Automated packaging/uploading of Qt libraries to Nexus
  • Entrypoint: Sophisticated user/permission handling to match host UID/GID
  • FUSE mounting: Zip-mounted libraries and toolchains for space efficiency

.

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

Python Build Script

The bin/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 use 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 3 different architectures of Qt frameworks.
Running as root --user 0:0 is needed to change the from user user the uid and gid.

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

Adding option --volume ${PWD}:/mnt/project makes the container run with the uid and gid of the project directory owner.
Adding option --env LOCAL_USER=<uid>:<gid> makes the container run with the given uid and gid.
Add options --env DISPLAY --volume ${HOME}/.Xauthority:/home/user/.Xauthority:ro to allow hosts X-server access for X11 GUI apps.

Versions of Tools

List of versions in the image.

Tag: 24.04-6.10.1
ApplicationVersion
Ubuntu24.04
Git2.52.0
GCC13.3.0
C++13.3.0
GCC-1313.3.0
C++-1313.3.0
MinGW GCC13-posix
MinGW C++13-posix
CMake4.2.0
GNU-Make4.3
Ninja-Build1.11.1
CLang-Format22.0.0
Gdb15.0.50.20240403-git
GNU-Linker2.42
DoxyGen1.9.8
Graphviz2.43.0
Exif-Tool12.76
Dpkg1.22.6
RPM4.18.2
OpenJDK21.0.9
BindFS1.14.7
Fuse-ZIP0.6.0
JQ1.7
Gcovr8.4
Python33.12.3
Wine10.0
Wine > Windows10.0.19043
Tag: 24.04-6.9.1
ApplicationVersion
Ubuntu24.04
Git2.50.1
GCC13.3.0
C++13.3.0
GCC-1313.3.0
C++-1313.3.0
MinGW GCC13-posix
MinGW C++13-posix
CMake4.1.0
GNU-Make4.3
Ninja-Build1.11.1
CLang-Format22.0.0
Gdb15.0.50.20240403-git
GNU-Linker2.42
DoxyGen1.9.8
Graphviz2.43.0
Exif-Tool12.76
Dpkg1.22.6
RPM4.18.2
OpenJDK21.0.8
BindFS1.14.7
Fuse-ZIP0.6.0
JQ1.7
Gcovr8.3
Python33.12.3
Wine10.0
Wine > Windows10.0.19043
Tag: 24.04-6.8.1
ApplicationVersion
Ubuntu24.04
Git2.49.0
GCC13.3.0
C++13.3.0
GCC-1313.3.0
C++-1313.3.0
MinGW GCC13-posix
MinGW C++13-posix
CMake3.31.6
GNU-Make4.3
Ninja-Build1.11.1
CLang-Format21.0.0
Gdb15.0.50
GNU-Linker2.42
DoxyGen1.9.8
Graphviz2.43.0
Exif-Tool12.76
Dpkg1.22.6
RPM4.18.2
OpenJDK21.0.6
BindFS1.14.7
Fuse-ZIP0.6.0
JQ1.7
Gcovr8.3
Python33.12.3
Wine10.0
Wine > Windows10.0.19043

Tag summary

Content type

Image

Digest

sha256:367b3fea2

Size

3.6 GB

Last updated

3 months ago

docker pull avolphen/amd64-gnu-cpp:24.04-6.10.3