Closed Emilgardis closed 2 months ago
This seems to be https://github.com/rust-lang/rust/issues/117101, caused by the update to llvm 17 and us using a too old ld.
I'll use a lower rustc for riscv for now
Building my own cross-rs image (https://github.com/users/endocrimes/packages/container/package/cross-rs%2Friscv64gc-unknown-linux-gnu) based on Ubuntu 23.04 rather than 20.04 got builds working successfully for me with Rust 1.76 (bc newer ld) in case anyone else ends up here after running into this 😅
Happy to PR the version bump, but I'm not really aware enough of broader cross-rs use to know if that's likely to break elsewhere.
I came across this cross-compiling on macos, and managed to build correctly with binutils updated to 2.38
I'm running into this issue and I can't seem to get any of the workarounds people have posted here to work. I don't understand how to get cross to use binutils 2.38 or Ubuntu 23.04 or use an older rustc version. So I'm just unable to cross-compile for RISCV at all using cross. If someone could point me towards a solution with a list of steps I can follow to get cross working for RISCV I would greatly appreciate it.
If it's relevant, I'm on Ubuntu 22.04 using rustc 1.78 and I'm trying to compile a cdylib. Cross works fine for me for aarch64 but not for riscv. The error output is just a long list of unsupported ISA subset 'z'
like above, so I'm pretty sure this is the correct issue to post in.
Hey @believeinlain,
I wasn't able to use it with cross due to the above error, I use a mac m1 as a my main dev machine at the moment.
I got the same error with the macos toolchain
long list of unsupported ISA subset 'z'
before using the updated formula with a later binutils (2.38)
that is compiling here for multi-targets (albeit a binary and not a cdylib)
https://github.com/YOU54F/hello_world_cross_rust/actions/runs/8741493783/job/23987644136#step:11:17
I do however recall manage to build a cdylib for riscv64gc-unknown-linux-gnu target in this run, with cross
https://github.com/YOU54F/pact_cli/actions/runs/8483936405/job/23245943624
I was trying to build slim binaries, but I wasn't able to build-std
https://github.com/YOU54F/pact_cli/blob/74b23c4f00c1d2b3065d5683f571815ca89a267b/Makefile#L79
Just kicked off the build again today for riscv64gc-unknown-linux-gnu target, will see if it passes 🤞🏾
https://github.com/YOU54F/pact_cli/actions/runs/9198478216/job/25301286790
I don't understand how to get cross to use binutils 2.38 or Ubuntu 23.04 or use an older rustc version.
I believe @endocrimes used an updated image by modifying the cross dockerfile to 23.04 and building it locally
https://github.com/cross-rs/cross/blob/main/docker/Dockerfile.riscv64gc-unknown-linux-gnu
You could give that a try, and you can reference custom images in your Cross.toml
https://github.com/cross-rs/cross/blob/main/docs/custom_images.md#custom-image
CI fails for this target:
riscv64gc-unknown-linux-gnu - ❌