Skip to content

error: linker rust-lld not found #52362

Closed

Description

@shishtpal

I installed Rust on my Raspberry pi3 but when i tried hello-world example from this page.
https://rustwasm.github.io/book/hello-world.html
it shows this error

pi@raspberrypi:~/RustTuts/hello-world $ 
cargo +nightly build --target wasm32-unknown-unknown --release --verbose
   
Compiling hello-world v0.1.0 (file:///home/pi/RustTuts/hello-world)
     
Running `rustc --crate-name hello_world src/lib.rs --crate-type cdylib --emit=dep-info,link -C opt-level=3 -C metadata=c2b67d4c4ad89cb4 --out-dir /home/pi/RustTuts/hello-world/target/wasm32-unknown-unknown/release/deps --target wasm32-unknown-unknown -L dependency=/home/pi/RustTuts/hello-world/target/wasm32-unknown-unknown/release/deps -L dependency=/home/pi/RustTuts/hello-world/target/release/deps`

error: linker `rust-lld` not found                                       ] 0/1: hello-world
  |
  = note: No such file or directory (os error 2)

error: aborting due to previous error

error: Could not compile `hello-world`.

Caused by:
  process didn't exit successfully: `rustc --crate-name hello_world src/lib.rs --crate-type cdylib --emit=dep-info,link -C opt-level=3 -C metadata=c2b67d4c4ad89cb4 --out-dir /home/pi/RustTuts/hello-world/target/wasm32-unknown-unknown/release/deps --target wasm32-unknown-unknown -L dependency=/home/pi/RustTuts/hello-world/target/wasm32-unknown-unknown/release/deps -L dependency=/home/pi/RustTuts/hello-world/target/release/deps` (exit code: 101)

Activity

  1. steveklabnik commented on Jul 14, 2018

    @steveklabnik
    Contributor

    Hm, there was some changes around this recently: intermezzOS/kernel@f341033

    But that's in target specs, which you don't have.

    What's your `rustc +nightly --version'?

  2. shishtpal commented on Jul 14, 2018

    @shishtpal
    Author

    pi@raspberrypi:~ $ rustc +nightly --version
    rustc 1.29.0-nightly (64f7de9 2018-07-12)

  3. mati865 commented on Jul 30, 2018

    @mati865
    Member

    Looks like docs are outdated, could you try installing llvm-tools-preview component?

    rustup component add llvm-tools-preview --toolchain=nightly
    
  4. shishtpal commented on Aug 1, 2018

    @shishtpal
    Author

    @mati865 I installed llvm-tools-preview but error remains the same

    pi@raspberrypi:~/RustTuts/hello-world $ rustup component add llvm-tools-preview --toolchain=nightly
    info: downloading component 'llvm-tools-preview'
    332.7 KiB / 332.7 KiB (100 %) 135.7 KiB/s ETA:   0 s
    info: installing component 'llvm-tools-preview'
    pi@raspberrypi:~/RustTuts/hello-world $ cargo +nightly build --target wasm32-unknown-unknown --release --verbose
       Compiling hello-world v0.1.0 (file:///home/pi/RustTuts/hello-world)
         Running `rustc --crate-name hello_world src/lib.rs --crate-type cdylib --emit=dep-info,link -C opt-level=3 -C metadata=c2b67d4c4ad89cb4 --out-dir /home/pi/RustTuts/hello-world/target/wasm32-unknown-unknown/release/deps --target wasm32-unknown-unknown -L dependency=/home/pi/RustTuts/hello-world/target/wasm32-unknown-unknown/release/deps -L dependency=/home/pi/RustTuts/hello-world/target/release/deps`
    error: linker `rust-lld` not found                                       ] 0/1: hello-world
      |
      = note: No such file or directory (os error 2)
    
    error: aborting due to previous error
    
    error: Could not compile `hello-world`.
    
    Caused by:
      process didn't exit successfully: `rustc --crate-name hello_world src/lib.rs --crate-type cdylib --emit=dep-info,link -C opt-level=3 -C metadata=c2b67d4c4ad89cb4 --out-dir /home/pi/RustTuts/hello-world/target/wasm32-unknown-unknown/release/deps --target wasm32-unknown-unknown -L dependency=/home/pi/RustTuts/hello-world/target/wasm32-unknown-unknown/release/deps -L dependency=/home/pi/RustTuts/hello-world/target/release/deps` (exit code: 101)
    
    
  5. mati865 commented on Aug 1, 2018

    @mati865
    Member

    Indeed issue affects arm but not x86.
    For x86_64 rust-lld is located in /rust-nightly-x86_64-unknown-linux-gnu/rustc/lib/rustlib/x86_64-unknown-linux-gnu/bin/ while on arm /rust-nightly-x86_64-unknown-linux-gnu/rustc/lib/rustlib/x86_64-unknown-linux-gnu/bin/ doesn't even exist.

  6. mati865 commented on Aug 2, 2018

    @mati865
    Member

    As per #48125 rust-lld is shipped only for Tier 1 platforms.
    If somebody knows if it's fine to enable it for ARMs builds it's @japaric

  7. japaric commented on Aug 2, 2018

    @japaric
    Contributor

    @mati865

    If somebody knows if it's fine to enable it for ARMs builds it's @japaric

    actually that would be @alexcrichton. If it were for me I would enable LLD everywhere it can be built but I don't know how that would affect CI time.

    PR #48125 says:

    Like Emscripten the LLD target is currently only enabled for Tier 1 platforms,
    notably OSX/Windows/Linux, and will need to be installed manually for compiling
    to wasm on other platforms.

    So you would have to install LLD on ARM Linux if want to compile to wasm. After #51936 you would have to pass -C linker=lld to rustc to use system LLD, or we would have to add logic to rustc to make it fallback to system LLD if rust-lld is not available in the sysroot. However, system LLD may not work if it's "too old" (e.g. installed via package manager) because, as of #51966, the wasm target expects LLD ~7.0.

  8. alexcrichton commented on Aug 2, 2018

    @alexcrichton
    Member

    Yes currently we unfortunately don't have enough time on CI to produce these artifacts for all platforms, only those with self-hosted compilers (which build one fewer compiler than the cross-compiled platforms)

  9. added
    A-linkageArea: linking into static, shared libraries and binaries
    on Sep 15, 2018
  10. berkus commented on Feb 3, 2019

    @berkus

    Bah... compiling rust-lld on a rpi3 might prove difficult/more time consuming that on CI. 😭

  11. vielmetti commented on Mar 28, 2019

    @vielmetti

    I've run into this problem in that I can't generate wasm on arm64.

    I'm testing this change to the build flags to see just how long Travis will take: https://github.com/vielmetti/rust/pull/1/commits/684f997e40038729d865e6e0cab59b8f50b99f79

  12. vielmetti commented on Mar 29, 2019

    @vielmetti

    Based on Plume-org/Plume#394 I can recommend this script as being suitable for installing the lld dependency:

    https://github.com/mcrosson/Plume/blob/master/script/wasm-deps.sh

    and then you invoke with RUSTFLAGS="-C linker=lld" cargo buildper the example at

    https://github.com/mcrosson/Plume/blob/master/script/plume-front.sh

    The note in the PR at Plume-org/Plume#402 says

    • The rust wasm packages do NOT include rustc-lld for arm
    • The lld binaries published by llvm.org will NOT build plume-front with linker=lld rust args
    • lld built from sources (what this patch does) on arm DOES build plume-front with linker=lld rust args
  13. lukateras commented on Aug 23, 2019

    @lukateras

    For the record, LLVM 8 lld is good enough, but LLVM 7 lld isn't. In Nix, one can just add llvmPackages_8.lld to nativeBuildInputs and set RUSTFLAGS = "-C linker=lld"; in the derivation.

  14. Mark-Simulacrum commented on Sep 2, 2019

    @Mark-Simulacrum
    Member

    I'm going to close this as it's not really an actionable issue at this point.

  15. reynoldsbd commented on Jan 26, 2020

    @reynoldsbd

    @alexcrichton I know the Rust's CI situation has changed a bit since this issue was first opened. Is it still the case that there isn't enough CI time available to build LLVM tools for (at least some) tier 2 platforms?

  16. alexcrichton commented on Jan 27, 2020

    @alexcrichton
    Member

    Unfortunately we haven't had any major changes to CI in the meantime.

  17. phil-opp commented on Feb 20, 2021

    @phil-opp
    Contributor

    I don't want to spam this issue, but I wanted to ask if the situation maybe changed with the switch to GitHub actions?

    Also, is there any tracking issue for things blocked on CI capacity? In a quick search, I found #42639, #57438, and #59637, but there are probably more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-linkageArea: linking into static, shared libraries and binaries

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions