librespot: Fails to build correctly with `arm-unknown-linux-musleabihf` target and rust > v1.21

I used to successfully compile librespot on a Pi3 with the “arm-unknown-linux-musleabihf” target. Up until a few months ago this was fine. Then the requirement for some rust later than 1.21 was introduced. And I never succeeded building for that target again. As soon as I use a more recent rust environment the binary would fail to run. It’s not even considered a statically linked binary any more:

$ file target/arm-unknown-linux-musleabihf/debug/librespot
target/arm-unknown-linux-musleabihf/debug/librespot: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /usr, BuildID[sha1]=dfa1ae4ddd017f8ad9b084905e2eedad079ecf8d, not stripped

Trying to run it I’d get the rather generic “file or folder not found” message:

$ target/arm-unknown-linux-musleabihf/debug/librespot
bash: target/arm-unknown-linux-musleabihf/debug/librespot: Datei oder Verzeichnis nicht gefunden

What’s wrong with this file? I noticed that during the build I would at some point get the following message:

warning: dropping unsupported crate type `cdylib` for target `arm-unknown-linux-musleabihf`

Could this be the reason for the failure?

FWIW: I’m successfully linking against musl on i386 and x86_64.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 16 (7 by maintainers)

Most upvoted comments

I tried again and with updated dependencies the whole project can be successfully compiled for arm-unknown-linux-musleabihf with the deault features (including libmdns). The issue may hereby be closed. Used compilation arguments:

RUSTFLAGS="-C link-args=-Wl,-rpath-link,/lib -C target-feature=-crt-static" PKG_CONFIG_PATH=/usr/lib/pkgconfig PKG_CONFIG_ALLOW_CROSS=1 cargo build --release

@PKizzle Thanks, if you could add a note about musleabihf as well it would be superb… In the meantime, will mark this as fixed.