ndarray icon indicating copy to clipboard operation
ndarray copied to clipboard

Allow cross compilation with BLAS on ARM bare metal (no libc)

Open unovongalixor opened this issue 1 month ago • 1 comments

Replaces libc references with core::ffi, and update cblas-sys to 0.3.0 which makes the same change there.

Following this change, you can add the following to your Cargo.toml

ndarray = { version = "0.17.1", default-features = false, features = ["blas"] }
blas-src = { version = "0.14", features = ["openblas"] }
openblas-src = { version = "0.10.13", features = ["cblas", "static"] }

and compile a static lib for --target=thumbv7em-none-eabi by providing the following ENV variables:

NO_SHARED=1 NO_FORTRAN=1 USE_THREAD=0 EMBEDDED=1 ONLY_CBLAS=1 ONLY_LAPACK=1 CROSS=1 OPENBLAS_TARGET=ARMV7 OPENBLAS_CC=arm-none-eabi-gcc HOST_CC=gcc

naturally you need the arm-none-eabi-gcc toolchain. Since it's a bit hard to configure, I figured i'd share the details in case you want it for documentation.

unovongalixor avatar Nov 12 '25 17:11 unovongalixor

Hello! I'm not super familiar with cross-compilation or ARM specifically. You mention that this requires some configuration; was this configuration always necessary? Or is there something about this change that has made it harder to configure?

akern40 avatar Nov 16 '25 22:11 akern40