Using a matrix and job separation we can make the architectures compile parallel to eachother, hopefully reducing the time required for builds and also simplifying the process of building a single architecture. A problem that we encountered is that with Python the resulting packed tars are very large. Each release is in the order of tens of megabytes. Using artifacts in our pipeline can easily make us surpass the maximum size limit for free GitHub accounts (500 MB). Because of this, we use the regular non-parallel pipeline for release build. Releasing the version from the same job the build was performed in allows us to directly access the build files instead of using artifacts. Separated release and MR pipelines.
Repository of static gdb and gdbserver
The statically compiled gdb / gdbserver binaries are avaliable to download under github releases!
link: gdb-static github releases
For manual gdb/gdbserver compilation instructions, have a look at the compilation.md file
Compiling gdb using docker
This repository contains a dockerfile and build scripts to compile gdb and gdbserver statically for multiple architectures. Currently, the supported architectures are:
- x86_64
- arm
- aarch64
- powerpc (32bit) You can easily expand it to support more architectures by adding the appropriate cross compilers to the dockerfile, and other build scripts.
NOTE: You don't need to interact with the dockerfile directly, as the Makefile will take care of everything for you.
Building for a specific architecture
To build for a specific architecture, you can use the following command:
make build-<ARCH>
For example, to build for arm:
make build-arm
The resulting binaries will be placed under the build/artifacts/
directory.
Each architecture will have its own directory under build/artifacts/
. For example, the arm architecture will have the following directory structure:
build/
artifacts/
arm/
...
Building for all architectures
To build for all architectures, you can use the following command:
make build
Cleaning the build
To clean the build, you can use the following command:
make clean