Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is there a way config cross using lld instead of ld. #1200

Open
yuyang-ok opened this issue Feb 3, 2023 · 13 comments
Open

Is there a way config cross using lld instead of ld. #1200

yuyang-ok opened this issue Feb 3, 2023 · 13 comments

Comments

@yuyang-ok
Copy link

ld is really slow.

@Emilgardis
Copy link
Member

Emilgardis commented Feb 3, 2023

Sure!

All that is needed is for you to install lld, and then use it as the linker

[build]
rustflags = [
  "-C", "link-arg=-fuse-ld=lld",
]

now, the tricky part is installing it, install it with pre-build

# Cross.toml
[build]
pre-build = [
    "apt-get update && apt-get install --assume-yes --no-install-recommends lld",
]

You can also use rust-lld as provided by rustup component add --toolchain <toolchain-used-by-cross> llvm-tools (where <toolchain-used-by-cross> would most likely be stable-x86_64-unknown-linux-gnu) and then setting the linker to rust-lld provided that it's in path or specifying the full path. This would be hugely improved with #716 and and allowing it to use cargo-binutils

@yuyang-ok
Copy link
Author

yuyang-ok commented Mar 1, 2023

But I am getting a error.

= note: collect2: fatal error: cannot find 'ld'
          compilation terminated.
          

error: could not compile `cranelift-tools` due to previous error
yuyang@yuyang-virtual-machine:~/projects/wasmtime/cranelift$ cat ~/.cargo/config.toml

[build]
rustflags = [
  "-C", "link-arg=-fuse-ld=lld",
]


[target.riscv64gc-unknown-linux-gnu]
runner = "qemu-riscv64 -L /usr/riscv64-linux-gnu   -E RUST_LOG=trace  -E CRANELIFT_TEST_BLESS=1  -E LD_LIBRARY_PATH=/usr/riscv64-linux-gnu/lib -E WASMTIME_TEST_NO_HOG_MEMORY=1"
yuyang@yuyang-virtual-machine:~/projects/wasmtime/cranelift$ lld 
lld is a generic driver.
Invoke ld.lld (Unix), ld64.lld (macOS), lld-link (Windows), wasm-ld (WebAssembly) instead

@Emilgardis
Copy link
Member

Emilgardis commented Mar 1, 2023

cross invokes cargo in a docker container, you can see how it's done by adding -v to your cross command.

Did you install lld in the container?

your third example block doesn't tell us anything, since the docker container wouldn't be able to access that lld

@yuyang-ok
Copy link
Author

yuyang-ok commented Mar 2, 2023

yuyang@yuyang-virtual-machine:~/projects/abc-rust$ cross    t  --target  riscv64gc-unknown-linux-gnu   -v 
+ cargo metadata --format-version 1 --filter-platform riscv64gc-unknown-linux-gnu
+ rustc --print sysroot
+ rustup toolchain list
+ rustup target list --toolchain stable-x86_64-unknown-linux-gnu
+ rustup component list --toolchain stable-x86_64-unknown-linux-gnu
+ /usr/bin/docker
+ "/home/yuyang/projects/abc-rust" /usr/bin/docker build --label 'org.cross-rs.for-cross-target=riscv64gc-unknown-linux-gnu' --label 'org.cross-rs.workspace_root=/home/yuyang/projects/abc-rust' --tag cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build --build-arg 'CROSS_CMD=apt-get update && apt-get install --assume-yes --no-install-recommends lld' --build-arg 'CROSS_DEB_ARCH=riscv64' --file /home/yuyang/projects/abc-rust/target/riscv64gc-unknown-linux-gnu/Dockerfile.riscv64gc-unknown-linux-gnu-custom /home/yuyang/projects/abc-rust
[+] Building 0.0s (6/6) FINISHED                                                                                           
 => [internal] load .dockerignore                                                                                     0.0s
 => => transferring context: 2B                                                                                       0.0s
 => [internal] load build definition from Dockerfile.riscv64gc-unknown-linux-gnu-custom                               0.0s
 => => transferring dockerfile: 252B                                                                                  0.0s
 => [internal] load metadata for ghcr.io/cross-rs/riscv64gc-unknown-linux-gnu:0.2.5                                   0.0s
 => [1/2] FROM ghcr.io/cross-rs/riscv64gc-unknown-linux-gnu:0.2.5                                                     0.0s
 => CACHED [2/2] RUN eval "apt-get update && apt-get install --assume-yes --no-install-recommends lld"                0.0s
 => exporting to image                                                                                                0.0s
 => => exporting layers                                                                                               0.0s
 => => writing image sha256:e1fffede042a23ab1a706c059dc2125283921bda88e8a3ab8e593b0b3a9d1c05                          0.0s
 => => naming to docker.io/library/cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build                  0.0s
WARNING: buildx: failed to get git commit: fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
+ /usr/bin/docker run --userns host -e 'PKG_CONFIG_ALLOW_CROSS=1' -e 'XARGO_HOME=/xargo' -e 'CARGO_HOME=/cargo' -e 'CARGO_TARGET_DIR=/target' -e 'CROSS_RUNNER=' -e TERM -e 'USER=yuyang' --rm --user 1000:1000 -v /home/yuyang/.xargo:/xargo:z -v /home/yuyang/.cargo:/cargo:z -v /cargo/bin -v /home/yuyang/projects/abc-rust:/project:z -v /home/yuyang/.rustup/toolchains/stable-x86_64-unknown-linux-gnu:/rust:z,ro -v /home/yuyang/projects/abc-rust/target:/target:z -w /project -i -t cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build sh -c 'PATH=$PATH:/rust/bin cargo t --target riscv64gc-unknown-linux-gnu -v'
   Compiling abc-rust v0.1.0 (/project)
     Running `rustc --crate-name abc_rust --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=a3d7e29999572b4c -C extra-filename=-a3d7e29999572b4c --out-dir /target/riscv64gc-unknown-linux-gnu/debug/deps --target riscv64gc-unknown-linux-gnu -C linker=riscv64-linux-gnu-gcc -C incremental=/target/riscv64gc-unknown-linux-gnu/debug/incremental -L dependency=/target/riscv64gc-unknown-linux-gnu/debug/deps -L dependency=/target/debug/deps -C link-arg=-fuse-ld=lld`
error: linking with `riscv64-linux-gnu-gcc` failed: exit status: 1
  |
  = note: "riscv64-linux-gnu-gcc" "/tmp/rustcyi4iUY/symbols.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.1b5oqb4wciqxcdio.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.2htsht9okv6sagq0.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.2rako2k2euj4d5vj.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.2tjtxbo6caeockk5.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.2xlbsyev5nd701bj.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.30kgte4qyd3imqkt.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.3s8jn9qlrk4jcxra.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.42huw4dwdv3nf2ir.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.42k68rieaq7zcjx3.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.49mjcayo02h5glj0.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.4gh8a5bmy5mii8ot.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.4i12p903s51oo003.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.4umpm29lrf3n0az5.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.4zejs3lxsw2r9bwk.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.54sbux4sps4f911h.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.59tlcm35970uksfo.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.5eb737egcbgdgzv4.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.9noem9sdlfuxyfc.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.cgpu6cokemeh5rs.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.pl18gipvd35bukh.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.ynki77og3d8udmq.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.139kjkqq2kcxohfb.rcgu.o" "-Wl,--as-needed" "-L" "/target/riscv64gc-unknown-linux-gnu/debug/deps" "-L" "/target/debug/deps" "-L" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libtest-a12af7bc67262600.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libgetopts-9b1de48e77161c23.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libunicode_width-4b2252012caea4dd.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_std-36ec70c2ebca6e86.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libstd-6147c29b8ff3ea27.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libpanic_unwind-0c177837aa9f290e.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libobject-462a556aabe36855.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libmemchr-d9629d470e403179.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libaddr2line-e6f7d80468b5f887.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libgimli-baeaf2b07634b84a.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_demangle-6f935ff8ebe6f784.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libstd_detect-399833d3e9c4e78c.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libhashbrown-2f336a0eb0b4dc88.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libminiz_oxide-063a66756334e321.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libadler-d85564e7db048852.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_alloc-cbf9a18737cbc2ee.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libunwind-aefcf6154048f103.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcfg_if-d286278df490ea1a.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/liblibc-8cce08b425f427c4.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/liballoc-986ec0703ec1feb3.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_core-a40da3de103c2538.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcore-1086253035fb93be.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcompiler_builtins-7a6abdcf36b75bfc.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib" "-o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs" "-fuse-ld=lld"
  = note: collect2: fatal error: cannot find 'ld'
          compilation terminated.
          

error: could not compile `abc-rust` due to previous error

Caused by:
  process didn't exit successfully: `rustc --crate-name abc_rust --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=a3d7e29999572b4c -C extra-filename=-a3d7e29999572b4c --out-dir /target/riscv64gc-unknown-linux-gnu/debug/deps --target riscv64gc-unknown-linux-gnu -C linker=riscv64-linux-gnu-gcc -C incremental=/target/riscv64gc-unknown-linux-gnu/debug/incremental -L dependency=/target/riscv64gc-unknown-linux-gnu/debug/deps -L dependency=/target/debug/deps -C link-arg=-fuse-ld=lld` (exit status: 1)
+ rustup component list --toolchain stable-x86_64-unknown-linux-gnu
yuyang@yuyang-virtual-machine:~/projects/abc-rust$ 

@yuyang-ok
Copy link
Author

yuyang-ok commented Mar 2, 2023

I have configure a Cross.toml at project root directory.

yuyang@yuyang-virtual-machine:~/projects/abc-rust$ cat Cross.toml 
[build]
pre-build = [
    "apt-get update && apt-get install --assume-yes --no-install-recommends lld",
]
yuyang@yuyang-virtual-machine:~/projects/abc-rust$ 

@yuyang-ok
Copy link
Author

I changed the command a little.

yuyang@yuyang-virtual-machine:~/projects/abc-rust$ cross    t  --target  riscv64gc-unknown-linux-gnu   -v 
+ cargo metadata --format-version 1 --filter-platform riscv64gc-unknown-linux-gnu
+ rustc --print sysroot
+ rustup toolchain list
+ rustup target list --toolchain stable-x86_64-unknown-linux-gnu
+ rustup component list --toolchain stable-x86_64-unknown-linux-gnu
+ /usr/bin/docker
+ "/home/yuyang/projects/abc-rust" /usr/bin/docker build --label 'org.cross-rs.for-cross-target=riscv64gc-unknown-linux-gnu' --label 'org.cross-rs.workspace_root=/home/yuyang/projects/abc-rust' --tag cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build --build-arg 'CROSS_CMD=apt-get update && apt-get install lld  -y' --build-arg 'CROSS_DEB_ARCH=riscv64' --file /home/yuyang/projects/abc-rust/target/riscv64gc-unknown-linux-gnu/Dockerfile.riscv64gc-unknown-linux-gnu-custom /home/yuyang/projects/abc-rust
[+] Building 29.4s (4/5)                                                                                                   
[+] Building 29.5s (4/5)                                                                                                   
[+] Building 29.7s (4/5)                                                                                                   
[+] Building 29.8s (4/5)                                                                                                   
[+] Building 72.7s (4/5)                                                                                                   
[+] Building 73.0s (4/5)                                                                                                   
[+] Building 150.2s (4/5)                                                                                                  
 => [internal] load build definition from Dockerfile.riscv64gc-unknown-linux-gnu-custom                               0.0s
[+] Building 150.4s (4/5)                                                                                                  
[+] Building 150.5s (4/5)                                                                                                  
[+] Building 195.8s (4/5)                                                                                                  
[+] Building 196.0s (4/5)                                                                                                  
[+] Building 196.1s (4/5)                                                                                                  
[+] Building 224.0s (4/5)                                                                                                  
[+] Building 224.3s (4/5)                                                                                                  
[+] Building 224.4s (4/5)                                                                                                  
[+] Building 244.6s (4/5)                                                                                                  
[+] Building 244.7s (4/5)                                                                                                  
[+] Building 244.9s (4/5)                                                                                                  
[+] Building 261.8s (4/5)                                                                                                  
[+] Building 261.9s (4/5)                                                                                                  
[+] Building 262.2s (4/5)                                                                                                  
[+] Building 262.4s (4/5)                                                                                                  
[+] Building 284.6s (5/5) FINISHED                                                                                         
 => [internal] load build definition from Dockerfile.riscv64gc-unknown-linux-gnu-custom                               0.0s
 => => transferring dockerfile: 252B                                                                                  0.0s
 => [internal] load .dockerignore                                                                                     0.0s
 => => transferring context: 2B                                                                                       0.0s
 => [internal] load metadata for ghcr.io/cross-rs/riscv64gc-unknown-linux-gnu:0.2.5                                   0.0s
 => CACHED [1/2] FROM ghcr.io/cross-rs/riscv64gc-unknown-linux-gnu:0.2.5                                              0.0s
 => ERROR [2/2] RUN eval "apt-get update && apt-get install lld  -y"                                                284.6s
------                                                                                                                     
 > [2/2] RUN eval "apt-get update && apt-get install lld  -y":                                                             
#0 20.48 Err:1 http://archive.archive.ubuntu.com/ubuntu bionic InRelease                                                   
#0 20.48   Temporary failure resolving 'archive.archive.ubuntu.com'                                                        
#0 20.48 Err:2 http://security.archive.ubuntu.com/ubuntu bionic-security InRelease                                         
#0 20.48   Temporary failure resolving 'security.archive.ubuntu.com'                                                       
#0 20.48 Err:3 http://ports.ubuntu.com/ubuntu-ports bionic InRelease
#0 20.48   Temporary failure resolving 'ports.ubuntu.com'
#0 40.50 Err:4 http://archive.archive.ubuntu.com/ubuntu bionic-updates InRelease
#0 40.50   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 40.50 Err:5 http://ports.ubuntu.com/ubuntu-ports bionic-updates InRelease
#0 40.50   Temporary failure resolving 'ports.ubuntu.com'
#0 60.52 Err:6 http://archive.archive.ubuntu.com/ubuntu bionic-backports InRelease
#0 60.52   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 60.52 Err:7 http://ports.ubuntu.com/ubuntu-ports bionic-backports InRelease
#0 60.52   Temporary failure resolving 'ports.ubuntu.com'
#0 80.54 Err:8 http://ports.ubuntu.com/ubuntu-ports bionic-security InRelease
#0 80.54   Temporary failure resolving 'ports.ubuntu.com'
#0 80.55 Reading package lists...
#0 82.13 W: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/dists/bionic/InRelease  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 82.13 W: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/dists/bionic-updates/InRelease  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 82.13 W: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/dists/bionic-backports/InRelease  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 82.13 W: Failed to fetch http://security.archive.ubuntu.com/ubuntu/dists/bionic-security/InRelease  Temporary failure resolving 'security.archive.ubuntu.com'
#0 82.13 W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/bionic/InRelease  Temporary failure resolving 'ports.ubuntu.com'
#0 82.13 W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/bionic-updates/InRelease  Temporary failure resolving 'ports.ubuntu.com'
#0 82.13 W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/bionic-backports/InRelease  Temporary failure resolving 'ports.ubuntu.com'
#0 82.13 W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/bionic-security/InRelease  Temporary failure resolving 'ports.ubuntu.com'
#0 82.13 W: Some index files failed to download. They have been ignored, or old ones used instead.
#0 82.19 Reading package lists...
#0 83.75 Building dependency tree...
#0 84.05 Reading state information...
#0 84.30 The following additional packages will be installed:
#0 84.30   binfmt-support libffi-dev libjsoncpp1 libpipeline1 libtinfo-dev lld-6.0
#0 84.30   llvm-6.0 llvm-6.0-dev llvm-6.0-runtime
#0 84.31 Suggested packages:
#0 84.31   llvm-6.0-doc
#0 84.36 The following NEW packages will be installed:
#0 84.37   binfmt-support libffi-dev libjsoncpp1 libpipeline1 libtinfo-dev lld lld-6.0
#0 84.37   llvm-6.0 llvm-6.0-dev llvm-6.0-runtime
#0 104.4 0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
#0 104.4 Need to get 29.3 MB of archives.
#0 104.4 After this operation, 182 MB of additional disk space will be used.
#0 104.4 Err:1 http://archive.archive.ubuntu.com/ubuntu bionic/main amd64 libpipeline1 amd64 1.5.0-1
#0 104.4   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 124.4 Err:2 http://archive.archive.ubuntu.com/ubuntu bionic/main amd64 binfmt-support amd64 2.1.8-2
#0 124.4   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 144.5 Err:3 http://archive.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libtinfo-dev amd64 6.1-1ubuntu1.18.04
#0 144.5   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 164.5 Err:4 http://archive.archive.ubuntu.com/ubuntu bionic/main amd64 libjsoncpp1 amd64 1.7.4-3
#0 164.5   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 184.5 Err:5 http://archive.archive.ubuntu.com/ubuntu bionic/main amd64 libffi-dev amd64 3.2.1-8
#0 184.5   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 204.5 Err:6 http://archive.archive.ubuntu.com/ubuntu bionic/main amd64 llvm-6.0-runtime amd64 1:6.0-1ubuntu2
#0 204.5   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 224.5 Err:7 http://archive.archive.ubuntu.com/ubuntu bionic/main amd64 llvm-6.0 amd64 1:6.0-1ubuntu2
#0 224.5   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 244.6 Err:8 http://archive.archive.ubuntu.com/ubuntu bionic/main amd64 llvm-6.0-dev amd64 1:6.0-1ubuntu2
#0 244.6   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 264.6 Err:9 http://archive.archive.ubuntu.com/ubuntu bionic/main amd64 lld-6.0 amd64 1:6.0-1ubuntu2
#0 264.6   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 Err:10 http://archive.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 lld amd64 1:6.0-41~exp5~ubuntu1
#0 284.6   Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/libp/libpipeline/libpipeline1_1.5.0-1_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/b/binfmt-support/binfmt-support_2.1.8-2_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/n/ncurses/libtinfo-dev_6.1-1ubuntu1.18.04_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi-dev_3.2.1-8_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/l/llvm-toolchain-6.0/llvm-6.0-runtime_6.0-1ubuntu2_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/l/llvm-toolchain-6.0/llvm-6.0_6.0-1ubuntu2_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/l/llvm-toolchain-6.0/llvm-6.0-dev_6.0-1ubuntu2_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/main/l/llvm-toolchain-6.0/lld-6.0_6.0-1ubuntu2_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Failed to fetch http://archive.archive.ubuntu.com/ubuntu/pool/universe/l/llvm-defaults/lld_6.0-41~exp5~ubuntu1_amd64.deb  Temporary failure resolving 'archive.archive.ubuntu.com'
#0 284.6 E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
------
WARNING: buildx: failed to get git commit: fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Dockerfile.riscv64gc-unknown-linux-gnu-custom:5
--------------------
   3 |                     ARG CROSS_DEB_ARCH=
   4 |                     ARG CROSS_CMD
   5 | >>>                 RUN eval "${CROSS_CMD}"
--------------------
ERROR: failed to solve: process "/bin/sh -c eval \"${CROSS_CMD}\"" did not complete successfully: exit code: 100
Error: 
   0: could not run container
   1: when building custom image
   2: when pre-building
   3: `/usr/bin/docker build --label 'org.cross-rs.for-cross-target=riscv64gc-unknown-linux-gnu' --label 'org.cross-rs.workspace_root=/home/yuyang/projects/abc-rust' --tag cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build --build-arg 'CROSS_CMD=apt-get update && apt-get install lld  -y' --build-arg 'CROSS_DEB_ARCH=riscv64' --file /home/yuyang/projects/abc-rust/target/riscv64gc-unknown-linux-gnu/Dockerfile.riscv64gc-unknown-linux-gnu-custom /home/yuyang/projects/abc-rust` failed with exit status: 1

Note: CROSS_CMD=apt-get update && apt-get install lld  -y
yuyang@yuyang-virtual-machine:~/projects/abc-rust$ 

@yuyang-ok
Copy link
Author

My network kind of slow,But should works fine.

@yuyang-ok
Copy link
Author

I switch to podman I am still getting this error.

yuyang@yuyang-virtual-machine:~/projects/abc-rust$ CROSS_CONTAINER_ENGINE=podman cross    t  --target  riscv64gc-unknown-linux-gnu   -v 
+ cargo metadata --format-version 1 --filter-platform riscv64gc-unknown-linux-gnu
+ rustc --print sysroot
+ rustup toolchain list
+ rustup target list --toolchain stable-x86_64-unknown-linux-gnu
+ rustup component list --toolchain stable-x86_64-unknown-linux-gnu
+ /usr/bin/podman
+ "/home/yuyang/projects/abc-rust" /usr/bin/podman build --label 'org.cross-rs.for-cross-target=riscv64gc-unknown-linux-gnu' --label 'org.cross-rs.workspace_root=/home/yuyang/projects/abc-rust' --tag cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build --build-arg 'CROSS_CMD=apt-get update && apt-get install lld  -y' --build-arg 'CROSS_DEB_ARCH=riscv64' --file /home/yuyang/projects/abc-rust/target/riscv64gc-unknown-linux-gnu/Dockerfile.riscv64gc-unknown-linux-gnu-custom /home/yuyang/projects/abc-rust
STEP 1/4: FROM ghcr.io/cross-rs/riscv64gc-unknown-linux-gnu:0.2.5
STEP 2/4: ARG CROSS_DEB_ARCH=
--> Using cache c665a2c801083f47d98924df942850e5c619066981505a8d738aa3a7898160e3
--> c665a2c8010
STEP 3/4: ARG CROSS_CMD
--> Using cache 11d12303bb7e6a79c2ddfcd072150c8b10a8ed67cf3a93a9c679758a8619bdf4
--> 11d12303bb7
STEP 4/4: RUN eval "${CROSS_CMD}"
--> Using cache 4e04174c2c1ebe08e1aa88282c922fcfd5ad417bd26ca44e93a86e35ccd0bbab
COMMIT cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build
--> 4e04174c2c1
Successfully tagged localhost/cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build
4e04174c2c1ebe08e1aa88282c922fcfd5ad417bd26ca44e93a86e35ccd0bbab
+ /usr/bin/podman run --userns host -e 'PKG_CONFIG_ALLOW_CROSS=1' -e 'XARGO_HOME=/xargo' -e 'CARGO_HOME=/cargo' -e 'CARGO_TARGET_DIR=/target' -e 'CROSS_RUNNER=' -e https_proxy -e TERM -e http_proxy -e 'USER=yuyang' --rm -v /home/yuyang/.xargo:/xargo:z -v /home/yuyang/.cargo:/cargo:z -v /cargo/bin -v /home/yuyang/projects/abc-rust:/project:z -v /home/yuyang/.rustup/toolchains/stable-x86_64-unknown-linux-gnu:/rust:z,ro -v /home/yuyang/projects/abc-rust/target:/target:z -w /project -i -t cross-custom-abc-rust:riscv64gc-unknown-linux-gnu-16d24-pre-build sh -c 'PATH=$PATH:/rust/bin cargo t --target riscv64gc-unknown-linux-gnu -v'
   Compiling abc-rust v0.1.0 (/project)
     Running `rustc --crate-name abc_rust --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=a3d7e29999572b4c -C extra-filename=-a3d7e29999572b4c --out-dir /target/riscv64gc-unknown-linux-gnu/debug/deps --target riscv64gc-unknown-linux-gnu -C linker=riscv64-linux-gnu-gcc -C incremental=/target/riscv64gc-unknown-linux-gnu/debug/incremental -L dependency=/target/riscv64gc-unknown-linux-gnu/debug/deps -L dependency=/target/debug/deps -C link-arg=-fuse-ld=lld -C link-arg=-fuse-ld=lld`
error: linking with `riscv64-linux-gnu-gcc` failed: exit status: 1
  |
  = note: "riscv64-linux-gnu-gcc" "/tmp/rustcB1w6yx/symbols.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.1b5oqb4wciqxcdio.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.2htsht9okv6sagq0.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.2rako2k2euj4d5vj.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.2tjtxbo6caeockk5.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.2xlbsyev5nd701bj.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.30kgte4qyd3imqkt.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.3s8jn9qlrk4jcxra.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.42huw4dwdv3nf2ir.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.42k68rieaq7zcjx3.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.49mjcayo02h5glj0.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.4gh8a5bmy5mii8ot.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.4i12p903s51oo003.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.4umpm29lrf3n0az5.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.4zejs3lxsw2r9bwk.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.54sbux4sps4f911h.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.59tlcm35970uksfo.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.5eb737egcbgdgzv4.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.9noem9sdlfuxyfc.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.cgpu6cokemeh5rs.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.pl18gipvd35bukh.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.ynki77og3d8udmq.rcgu.o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c.139kjkqq2kcxohfb.rcgu.o" "-Wl,--as-needed" "-L" "/target/riscv64gc-unknown-linux-gnu/debug/deps" "-L" "/target/debug/deps" "-L" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libtest-a12af7bc67262600.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libgetopts-9b1de48e77161c23.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libunicode_width-4b2252012caea4dd.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_std-36ec70c2ebca6e86.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libstd-6147c29b8ff3ea27.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libpanic_unwind-0c177837aa9f290e.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libobject-462a556aabe36855.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libmemchr-d9629d470e403179.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libaddr2line-e6f7d80468b5f887.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libgimli-baeaf2b07634b84a.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_demangle-6f935ff8ebe6f784.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libstd_detect-399833d3e9c4e78c.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libhashbrown-2f336a0eb0b4dc88.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libminiz_oxide-063a66756334e321.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libadler-d85564e7db048852.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_alloc-cbf9a18737cbc2ee.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libunwind-aefcf6154048f103.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcfg_if-d286278df490ea1a.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/liblibc-8cce08b425f427c4.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/liballoc-986ec0703ec1feb3.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_core-a40da3de103c2538.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcore-1086253035fb93be.rlib" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcompiler_builtins-7a6abdcf36b75bfc.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/rust/lib/rustlib/riscv64gc-unknown-linux-gnu/lib" "-o" "/target/riscv64gc-unknown-linux-gnu/debug/deps/abc_rust-a3d7e29999572b4c" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs" "-fuse-ld=lld" "-fuse-ld=lld"
  = note: collect2: fatal error: cannot find 'ld'
          compilation terminated.
          

error: could not compile `abc-rust` due to previous error

Caused by:
  process didn't exit successfully: `rustc --crate-name abc_rust --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=a3d7e29999572b4c -C extra-filename=-a3d7e29999572b4c --out-dir /target/riscv64gc-unknown-linux-gnu/debug/deps --target riscv64gc-unknown-linux-gnu -C linker=riscv64-linux-gnu-gcc -C incremental=/target/riscv64gc-unknown-linux-gnu/debug/incremental -L dependency=/target/riscv64gc-unknown-linux-gnu/debug/deps -L dependency=/target/debug/deps -C link-arg=-fuse-ld=lld -C link-arg=-fuse-ld=lld` (exit status: 1)
+ rustup component list --toolchain stable-x86_64-unknown-linux-gnu

@yuyang-ok
Copy link
Author

@Emilgardis Can you look at it for me,Thanks.😊

@Emilgardis Emilgardis reopened this Mar 3, 2023
@svenstaro
Copy link
Contributor

The current default Ubuntu base image is using xenial and is too old to even have lld in repos. You need to add this to your Cross.toml:

[build]
pre-build = ["apt update -y && apt install -y --no-install-recommends lld"]

[target.aarch64-unknown-linux-gnu]
image = "ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main"

This will use the image on main which us much more recent and makes this work for me just fine.

@svenstaro
Copy link
Contributor

@Emilgardis Actually I'm also hitting the user's original error:

  = note: collect2: fatal error: cannot find 'ld'
          compilation terminated.

Thankfully, it's super easy to reproduce:

cd /tmp
cargo new hello
cd hello
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C link-arg=-fuse-ld=lld" cross build --release --target aarch64-unknown-linux-gnu -v

I'm not super sure why this fails. It would be really neat if we'd be a able to use lld, though.

@yuyang-ok
Copy link
Author

@svenstaro Thank, I have been busying these day,I will take a look when I have time.

@carlocorradini
Copy link

Any update? 😰

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants