Unofficial Julia images for arm devices e.g. Raspberry Pi3 or Raspberry Pi Zero
2.7K
Dockerfiles which build Julia (binary/docker-image) for (some) Arm devices e.g. Raspberry Pi Series (also including Zero) using cross compilation.
For Ubuntu user, you will need install cross compilation tools:
$ apt-get update
$ apt-get install -y qemu-user-static binfmt-support
Thats' all
To prove Julia can run on arm devices We've uploaded Docker images on Docker Hub repository named jlcross
$ docker pull terasakisatoshi/jlcross:rpizero-v1.3.1
Unable to find image 'terasakisatoshi/jlcross:rpizero-v1.3.1' locally
rpizero-v1.3.1: Pulling from terasakisatoshi/jlcross
(start to pull image...)
$ cat hello.jl
using Pkg
Pkg.add("Example")
using Example
hello("World")
$ sudo docker run --rm -it -v $PWD:/work -w /work terasakisatoshi/jlcross:rpizero julia hello.jl
Cloning default registries into `~/.julia`
Cloning registry from "https://github.com/JuliaRegistries/General.git"
Resolving package versions... Added registry `General` to `~/.julia/registries/General`
Resolving package versions...
Installed Example ─ v0.5.1
Updating `~/.julia/environments/v1.1/Project.toml`
[7876af07] + Example v0.5.1
Updating `~/.julia/environments/v1.1/Manifest.toml`
[7876af07] + Example v0.5.1
[2a0f44e3] + Base64
[8ba89e20] + Distributed
[b77e0a4c] + InteractiveUtils
[56ddb016] + Logging
[d6f4376e] + Markdown
[9a3f8284] + Random
[9e88b42a] + Serialization
[6462fe0b] + Sockets
[8dfed614] + Test
Hello, World
rpi3/Dockerfile-v1.4.1 and run the following command on your terminal to build Docker image which will include Julia binary:$ sudo docker build -t jl4rpi3 -f Dockerfile-v1.4.1 .
docker-compose will build each version of Julia. Namely:$ sudo docker-compose build --parallel
# open your terminal e.g. your work station
$ cat get_binary.sh # write shell script by yourself like below:
#!/bin/bash
JL_VERSION=v1.4.1
IMAGE_NAME=terasakisatoshi/jlcross:rpizero-${JL_VERSION}
CONTAINER_NAME=jltmp_${JL_VERSION}
docker run --name ${CONTAINER_NAME} $IMAGE_NAME /bin/bash
docker cp ${CONTAINER_NAME}:/home/pi/julia-${JL_VERSION} .
docker rm ${CONTAINER_NAME}
$ bash get_binary.sh
$ ls
julia-v1.4.1
julia-v1.4.1 to your Raspberry Pi zero:$ scp -r julia-v1.4.1 [email protected]:/home/pi
julia-v1.4.1 to your Raspberry Pi, one need install the following dependencies via apt which is almost same as Dockerfile-1.4.1.# Open Your Raspberry Pi's terminal
$ sudo apt-get update && \
apt-get install -y build-essential libatomic1 python gfortran perl wget m4 cmake pkg-config \
libopenblas-dev \
liblapack-dev \
libgmp3-dev \
libmpfr-dev
$ export 'PATH=/home/pi/julia-v1.4.1/bin:$PATH' >> /home/pi/.bashrc
$ source /home/pi/.bashrc
$ julia # Oh Yes!!!
That's all
$ sudo docker create --name jltmp -it terasakisatoshi/jlcross:jetson-nano-1.1.1 /bin/bash
$ sudo docker cp jltmp:/home/jetson-nano/work/julia-1.1.1 .
$ sudo docker stop jltmp
$ docker rm jltmp
$ ls # you will see julia-1.1.1 current directory of your build machine
julia-1.1.1
That's all.
v1.2.0 on Raspberry Pi zero works fine.
v1.0.5, v1.1.1, v1.3.1, v1.4.0 and v1.4.1 are O.K.v1.2.0 on Raspberry Pi3 using Docker its base image is balenalib/raspberrypi3:buster-20191030 with error message something like:
undefined reference to llvm::BasicBlockPass::createPrinterPass(llvm::raw_ostream&, std::string const&) const'As with all Dockerfiles, how to build julia, are licensed under the terms of MIT License.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in the repo-info repository's julia/ directory.
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
Content type
Image
Digest
sha256:0718d2b4c…
Size
670.1 MB
Last updated
almost 2 years ago
docker pull terasakisatoshi/jlcross:rpi3-v1.11.1-debug