You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to build an library with proc-macro for x86_64-unknown-linux-musl target.
When the host is x86_64-unknown-linux-gnu it can be compiled successfully.
However, when the host is x86_64-unknown-linux-gnu, Cargo outputs this error:
error: cannot produce proc-macro for `proc_macro_lib v0.1.0 (/proc-macro-lib)` as the target `x86_64-unknown-linux-musl` does not support these crate types
As I understand, there should be no difference, as the target is the same and no C libraries from the host are used.
Steps
I've created this repository to reproduce the problem using Docker.
Running
docker-compose up --build host-gnu
runs cargo build for a library with proc-macro = true with host x86_64-unknown-linux-gnu and target x86_64-unknown-linux-musl, it builds the library successfully.
However, running
docker-compose up --build host-must
outputs the error mentioned above. Notes
Output of cargo version:
cargo 1.36.0 (c4fcfb725 2019-05-15)
The text was updated successfully, but these errors were encountered:
ghost
changed the title
Target doesn't support these crate types error on x86_64-unknown-linux-musl host
"target doesn't support these crate types" error on x86_64-unknown-linux-musl host
Jul 20, 2019
Thanks for the detailed repro! I think the issue is that rustc for musl does not support dynamic linking. Proc-macros have to be dynamic libraries as they are loaded by rustc. I'm not up-to-speed on what is blocking this, but I think rust-lang/rust#59302 is the main issue for tracking this.
One option is to use the gnu host with --target for musl.
Problem
I'm trying to build an library with
proc-macro
forx86_64-unknown-linux-musl
target.When the host is
x86_64-unknown-linux-gnu
it can be compiled successfully.However, when the host is
x86_64-unknown-linux-gnu
, Cargo outputs this error:As I understand, there should be no difference, as the target is the same and no C libraries from the host are used.
Steps
I've created this repository to reproduce the problem using Docker.
Running
runs
cargo build
for a library withproc-macro = true
with hostx86_64-unknown-linux-gnu
and targetx86_64-unknown-linux-musl
, it builds the library successfully.However, running
outputs the error mentioned above.
Notes
Output of
cargo version
:The text was updated successfully, but these errors were encountered: