From a1bafece22483a16137ef0560ec2d731a711b721 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Fri, 13 Feb 2026 14:04:41 +0100 Subject: [PATCH] Add arm64 Docker build container for native cross-compilation Uses ubuntu:22.04 arm64 image running under QEMU emulation to produce aarch64 binaries that match the target device exactly (same glibc, same distro). Replaces the broken Buildroot cross-compilation approach. Co-Authored-By: Claude Opus 4.6 --- docker-arm64/.build | 0 docker-arm64/Dockerfile | 8 ++++++++ docker-arm64/Makefile | 25 +++++++++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 docker-arm64/.build create mode 100644 docker-arm64/Dockerfile create mode 100644 docker-arm64/Makefile diff --git a/docker-arm64/.build b/docker-arm64/.build new file mode 100644 index 0000000..e69de29 diff --git a/docker-arm64/Dockerfile b/docker-arm64/Dockerfile new file mode 100644 index 0000000..8ad1d8a --- /dev/null +++ b/docker-arm64/Dockerfile @@ -0,0 +1,8 @@ +FROM ubuntu:22.04 +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential pkg-config \ + libsdl2-dev libsdl2-image-dev \ + libavformat-dev libavcodec-dev libavutil-dev libswresample-dev \ + && rm -rf /var/lib/apt/lists/* +WORKDIR /workspace diff --git a/docker-arm64/Makefile b/docker-arm64/Makefile new file mode 100644 index 0000000..e5d79e8 --- /dev/null +++ b/docker-arm64/Makefile @@ -0,0 +1,25 @@ +.PHONY: shell build clean + +IMAGE_NAME = arm64-dev +PROJECT_DIR := $(shell cd .. && pwd) + +CONTAINER_NAME = $(shell docker ps -f "ancestor=$(IMAGE_NAME)" --format "{{.Names}}") + +.build: Dockerfile + docker build --platform linux/arm64 -t $(IMAGE_NAME) . + touch .build + +ifeq ($(CONTAINER_NAME),) +shell: .build + docker run --platform linux/arm64 -it --rm -v "$(PROJECT_DIR)":/workspace $(IMAGE_NAME) /bin/bash +else +shell: + docker exec -it $(CONTAINER_NAME) /bin/bash +endif + +build: .build + docker run --platform linux/arm64 --rm -v "$(PROJECT_DIR)":/workspace $(IMAGE_NAME) make + +clean: + docker rmi $(IMAGE_NAME) + rm -f .build