Open terasakisatoshi opened 4 years ago
It is easy to reproduce getting error msg with Illegal instruction using the following Dockerfile:
FROM terasakisatoshi/jlcross:rpizero-v1.3.0
RUN julia -e 'using Pkg; Pkg.add("FFMPEG")'
It looks like the latest _jll releases include armv6l binaries: https://github.com/JuliaBinaryWrappers/MbedTLS_jll.jl/releases ... but only for julia 1.6: https://github.com/JuliaBinaryWrappers/MbedTLS_jll.jl/blob/ff43d4a8b3d577794a48ab4f5a3c6171c5c98971/Project.toml#L11-L13
I was able to work around "Invalid ARM instruction" by manually downloading the armv6l _jll release tarball and overwriting the content of the ~/.julia/artifacts ...
pi@raspberrypi:~/.julia/artifacts/6051ba7f32a666a7c54493c4271750b5a9e43379 $ wget https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl/releases/download/CompilerSupportLibraries-v0.3.6%2B1/CompilerSupportLibraries.v0.3.6.armv6l-linux-gnueabihf-libgfortran5.tar.gz
pi@raspberrypi:~/.julia/artifacts/6051ba7f32a666a7c54493c4271750b5a9e43379 $ tar xzf CompilerSupportLibraries.v0.3.6.armv6l-linux-gnueabihf-libgfortran5.tar.gz
... using pkg> dev
to forcibly updatethe _jll packages to git master works too.
Thank you for looking issue i posted. I need check again! > It looks like the latest _jll releases include armv6l binaries:
This topic begins with my tweets.
I'm trying to run Julia on Raspberry Pi Series for edge computing which is hot topics in IoT era . Since the official Julia home page provides julia binary for Arm 32 bit (armv7l) we can use it on Raspberry Pi 2,3 and 4. However CPU architecture of RaspberryPi1 and Raspberry Pi Zero are different that of Raspberry Pi >=2, which means official Julai binary does not support old Raspberry Pi (Someone say it is old device, but they are mainly used in industrial purpose).
As a member of Julia-Embedded, I'm making a repository Julia-Embedded/jlcross that supports to build Julia for Raspberry Pi series includeing Zero (armv6l). AFIK, Julia v1.3.0 runs on Raspberry Pi Zero.
Some Packages e.g. PyCall, SymPy or QuadGK works great.
But Running IJulia, Installation procedure e.g. BinaryBuilder, VideoIO.jl or FFMPEG.jl fails with Illegal instruction because they depend shared object provided by BinaryBuilder.jl
There is a workaround to avoid our issue, for example, replace all dependencies with ones provided via
sudo apt install <some dependencies>
. But this is a sort of hacky solution.My question is that: Is there any way to avoid our issue e.g. switch shared object which Julia Packages adopts to ones provided via
sudo apt install ...
?Thank you.