Cross-Compiling with JuliaC
Goal
To use JuliaC.jl to compile an application from x86_64 for aarch64.
Prerequisites
I am using Archlinux for this and currently the method of cross compilation only works on Linux.
Note
Julia currently does not have native cross-compilation capabilities (ignoring GPUCompiler.jl for now.). So we must execute the compiler in an emulated target environment.
I had to install:
aarch64-linux-gnu-glibcaarch64-linux-gnu-gccqemu-userqemu-user-binfmt
Note
It would be fantastic if we could use jlls to obtain an environment suitable for cross-compilation.
Julia
We also need a Julia build for aarch64, you can get one from https://julialang.org/downloads/manual-downloads/
The meat and potatoes
Project
[deps]
JuliaC = "acedd4c2-ced6-4a15-accc-2607eb759ba2"
[compat]
JuliaC = "0.3"
cross_compiling.jl
const julia_aarch64 = `julia-1.12.5/bin/julia`
qemu_aarch64() = `qemu-aarch64`
function run_aarch64(cmd)
qemu = addenv(qemu_aarch64(),
"QEMU_LD_PREFIX" =>"/usr/aarch64-linux-gnu/",
"JULIA_CC" => "aarch64-linux-gnu-gcc",
)
run(`$(qemu) $(cmd)`)
end
run_aarch64(`$(julia_aarch64) -e "using InteractiveUtils; versioninfo()"`)
run_aarch64(`$(julia_aarch64) --project=. -e "import Pkg; Pkg.instantiate(); Pkg.precompile()"`)
juliac(args) = run_aarch64(`$(julia_aarch64) --project=. -e "using JuliaC; JuliaC.main(ARGS)" -- $(args)`)
cc(app) = juliac(`--output-exe app --bundle build_aarch64 --trim=unsafe-warn --experimental $(app)`)
cc(ARGS[0])
Running it:
julia +1.12 --project=. crosscompiling.jl TestApp
file build_aarch64/bin/app
build_aarch64/bin/app: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=9b424857d2614c45cf0dec8fd97d99443e4a54c9, for GNU/Linux 3.7.0, with debug_info, not stripped
QEMU_LD_PREFIX=/usr/aarch64-linux-gnu/ ./build_aarch64/bin/app
LEDCube AppTest starting...
Connecting to LEDCube server at 127.0.0.1:2017
Cite this note
Valentin Churavy. (2026). Cross-Compiling with JuliaC. https://vchuravy.dev/notes/2026/04/cross_compiling/
@misc{churavy2026:crosscompiling,
author = {Churavy, Valentin},
title = {Cross-Compiling with JuliaC},
year = {2026},
date = {2026-04-05},
url = {https://vchuravy.dev/notes/2026/04/cross_compiling/},
}
© Valentin Churavy. Last modified: November 03, 2026. Website built with Franklin.jl and the Julia programming language.
Analytics powered by plausible.io.