rust-lang / cargo

The Rust package manager
https://doc.rust-lang.org/cargo
Apache License 2.0
12.66k stars 2.41k forks source link

Cross compile to RISCV fault #8304

Closed chaozju closed 4 years ago

chaozju commented 4 years ago

what the issue is

I wonder what else does cross compilation need except assigning rv-gcc and rv-ld.

what I've done:

installed toolchains

stable-x86_64-unknown-linux-gnu nightly-x86_64-unknown-linux-gnu 1.40.0-x86_64-unknown-linux-gnu

installed targets for active toolchain

riscv64gc-unknown-linux-gnu x86_64-unknown-linux-gnu

active toolchain

stable-x86_64-unknown-linux-gnu (default) rustc 1.42.0 (b8cedc004 2020-03-09)

- adding belowing to `.cargo/config`
```bash
[bulid]
target = "riscv64gc-unknown-linux-gnu"

[target.riscv64gc-unknown-linux-gnu]
linker = "/opt/riscv/bin/riscv64-unknown-linux-gnu-ld"

what I got

Relocations in generic ELF (EM: 62) and error adding symbols: file in wrong format

cargo build --release --features "backend-llvm" \
--target riscv64gc-unknown-linux-gnu  -j8
   Compiling wasmer-bin v0.17.0 (/home/chao/wasmer)
error: linking with `/opt/riscv/bin/riscv64-unknown-linux-gnu-ld` failed: exit code: 1
  |
  = note: "/opt/riscv/bin/riscv64-unknown-linux-gnu-ld" "-L" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.0.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.1.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.10.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.11.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.12.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.13.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.14.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.15.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.2.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.3.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.4.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.5.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.6.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.7.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.8.rcgu.o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.wasmer.2d09us9l-cgu.9.rcgu.o" "-o" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/wasmer-4f010a1e87e7ced6.536q2nb7rp5nzz0m.rcgu.o" "--gc-sections" "-pie" "-zrelro" "-znow" "-O1" "-L" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps" "-L" "/home/chao/wasmer/target/release/deps" "-L" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/build/wabt-sys-bca93cbbd64a59e6/out/build" "-L" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/build/wabt-sys-bca93cbbd64a59e6/out" "-L" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/build/wasmer-llvm-backend-c67a9b44e54bceaa/out" "-L" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/build/llvm-sys-4ffb6a66964d2f5e/out" "-L" "/usr/local/llvm/lib" "-L" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib" "-Bstatic" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libwasmer_bin-839ad2a60fa0717f.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libwabt-2e1e8a9f72f205b8.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libwabt_sys-40af8f29ae5b6ece.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libserde_json-2199df63dd5e6675.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libryu-60cde15a06967bea.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libitoa-b597ae7884bf5261.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libwasmer_wasi-1a9dcacb754b914e.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libgetrandom-1079e3d677a98c7f.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libtime-da16180d061a88da.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libtypetag-582f258b39536105.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/liberased_serde-22bf6a6da8dd015e.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libinventory-aefac11448700d37.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libgenerational_arena-62a910911b7ba3c5.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libthiserror-fee247b7a3bc67f6.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/liblog-2a78ffa1622e5d51.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libwasmer_runtime-a5018fb43d5b5fec.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libwasmer_llvm_backend-c1b32eacea1964b8.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libinkwell-d94fbbbfc32f26c3.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libregex-4183ec07ae8ccec3.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libthread_local-85d2f338a874f1f7.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libregex_syntax-7d3435880eca2227.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libaho_corasick-9c4d5b7fc13b1cc6.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libmemchr-d377f0c701f140f3.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libonce_cell-adcd715534b79737.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libeither-96d28575812dbafa.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libllvm_sys-ddc06ecc0decb650.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libmemmap-51bcdae343de0a38.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libwasmer_runtime_core-4c74ef5166b37914.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libserde_bench-26fed80b9aba8f9c.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libhex-ffbb2505f8859081.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libblake3-0c873c3893532081.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libconstant_time_eq-b55490d85472076e.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libarrayvec-1424eaa0c48e7c10.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libdigest-440ccc1d14d5d9e5.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libcrypto_mac-61f23e1fa417284c.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libgeneric_array-69b2c3e236661686.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libtypenum-a77416fc19c48a7c.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libsubtle-c1e02532b8aacb37.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libarrayref-8f9702d2cf71a915.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libbincode-26f4486e422ea749.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libbyteorder-2fa8aa3dfb1ad5a1.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libserde_bytes-773af4cd4da49a58.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libpage_size-c60398fd7c4964a2.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libnix-7d8ffce97e1558c5.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/liberrno-b98a5dcb6ffd0079.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libparking_lot-f55eef067fafa42d.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libparking_lot_core-ad6d30a70f844b65.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libcfg_if-917cabb25f8eb9c5.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/liblock_api-ca19027684c6959a.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libscopeguard-62ced4fbdf505d8e.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libindexmap-8f198adf4affa3d8.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libserde-eec824e558c5d07b.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libwasmparser-de869ac94e5c895f.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libsmallvec-4cde53b60b7bee2e.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libstructopt-504a62bef504d7db.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/liblazy_static-c64734035eb16140.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libclap-f7b9a5bab4ec934d.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libvec_map-bd75584f57c0012c.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libtextwrap-0e9bace9d80a7415.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libunicode_width-f29dc136a0e367de.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libstrsim-19b4584a0ce6fd33.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libbitflags-1c64f5db8b563e76.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libatty-3388f805c579b6d0.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/liblibc-a0108479893efad1.rlib" "/home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libansi_term-1a3810faaf4b36ae.rlib" "--start-group" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libstd-29712de6ab8599b7.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libpanic_unwind-ea961648088e6a5a.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libhashbrown-77a8c31575706ea6.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_alloc-e00fbca28363c8e5.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libbacktrace-b625cb66ec040d17.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libbacktrace_sys-b20376c1796c5f8d.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_demangle-184eeaabc41565f1.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libunwind-bf140e104338c212.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcfg_if-cfcf1d5d30228c7d.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/liblibc-ae46e0c3d7731aa2.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/liballoc-9af9b62afcbb97d1.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_core-dc738be269a2b099.rlib" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcore-5be35663befa1396.rlib" "--end-group" "/home/chao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcompiler_builtins-aa2b6514d12368dd.rlib" "-Bdynamic" "-lstdc++" "-lstdc++" "-lffi" "-lz" "-lrt" "-ldl" "-ltinfo" "-lpthread" "-lm" "-lxml2" "-lstdc++" "-lutil" "-ldl" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil"
  = note: /opt/riscv/bin/riscv64-unknown-linux-gnu-ld: /home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libllvm_sys-ddc06ecc0decb650.rlib(ObjCARC.cpp.o): Relocations in generic ELF (EM: 62)
          /opt/riscv/bin/riscv64-unknown-linux-gnu-ld: /home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libllvm_sys-ddc06ecc0decb650.rlib(ObjCARC.cpp.o): Relocations in generic ELF (EM: 62)
          /opt/riscv/bin/riscv64-unknown-linux-gnu-ld: /home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libllvm_sys-ddc06ecc0decb650.rlib(ObjCARC.cpp.o): Relocations in generic ELF (EM: 62)
          /opt/riscv/bin/riscv64-unknown-linux-gnu-ld: /home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libllvm_sys-ddc06ecc0decb650.rlib(ObjCARC.cpp.o): Relocations in generic ELF (EM: 62)
          /opt/riscv/bin/riscv64-unknown-linux-gnu-ld: /home/chao/wasmer/target/riscv64gc-unknown-linux-gnu/release/deps/libllvm_sys-ddc06ecc0decb650.rlib: error adding symbols: file in wrong format

error: aborting due to previous error

error: could not compile `wasmer-bin`.

To learn more, run the command again with --verbose.
Makefile:333: recipe for target 'release' failed
make: *** [release] Error 101
alexcrichton commented 4 years ago

Thanks for the report! This is not a bug in Cargo, however, but likely an issue with one of the crates you're using. Given the error message it's probably llvm-sys

chaozju commented 4 years ago

@alexcrichton Hi! Thanks a lot! I'm quite sorry about bothering! cause I am really a green hand on this. BTW, in you view, does it mean that what I have done on toolchain and configs is sufficient?

alexcrichton commented 4 years ago

It looks like it's generally configured right, yes, but not all crates always read the configuration. Everything in the build needs to be working together in concert to get cross-compiles working, and it's common to have at least one straggler to fixup to get in line with the rest of crates to use the same configuration and/or support.