cross-rs / cross-toolchains

Additional Dockerfiles and crosstool-ng config files to build additional toolchains.
Apache License 2.0
88 stars 16 forks source link

Add riscv64gc-unknown-linux-musl support #40

Open overheat opened 1 year ago

overheat commented 1 year ago

Checklist

Describe your request

rustup target add riscv64gc-unknown-linux-musl

error: toolchain 'stable-x86_64-unknown-linux-gnu' does not contain component 'rust-std' for target 'riscv64gc-unknown-linux-musl'

How to build 'rust-std' for target 'riscv64gc-unknown-linux-musl'?

Describe why this would be a good inclusion for cross

more Risc-V linux enabled SoC.

Emilgardis commented 1 year ago

not having std is fine, we can simply use build-std

if you have all the tools to build for this target, adding cargo +nightly build -Z build-std=core,std,panic_abort --target riscv64gc-unknown-linux-musl should work for you.

For us creating an image supporting this should be fairly simple. Since this is a T3 target this should probably be added according to https://github.com/cross-rs/cross/wiki/Contributing#adding-new-targets

overheat commented 1 year ago

@Emilgardis Thanks. I will try to create an image supporting.

BTW, cargo +nightly build -Z build-std=core,std,panic_abort --target riscv64gc-unknown-linux-musl not works. the error is:

...
ld: cannot find -lunwind

I suppose it missing libunwind.rlib under ~/.rustup/toolchains/...

Do you know how to build 'rust-std' for target 'riscv64gc-unknown-linux-musl'? Maybe I can menully install it to my ~/.rustup/toolchains/.. folder

Emilgardis commented 1 year ago

You can build std with https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html#building-targets-for-cross-compilation or simply using -Zbuild-std=std

I'll move this issue to cross-toolchains since it should belong there instead