Rust-CUDA: Building repo, getting "undefined symbol: setupterm"
Bear with me here as I’m on NixOS so installing the dependencies has been a journey. I’ve cloned this repo and am just trying to run cargo build. I’ve gotten as far as installing CUDA and OptiX, to the point where it’s actually building the path_tracer crate, but now I’m getting some scary codegen errors from rustc:
error: failed to run custom build command for `path_tracer v0.1.0 ($REPO_ROOT/examples/cuda/cpu/path_tracer)`
Caused by:
process didn't exit successfully: `$REPO_ROOT/target/debug/build/path_tracer-970d6a9b9c38170f/build-script-build` (exit status: 101)
--- stdout
cargo:rerun-if-changed=../../gpu/path_tracer_gpu
--- stderr
warning: $REPO_ROOT/crates/cust/Cargo.toml: `default-features = [".."]` was found in [features]. Did you mean to use `default = [".."]`?
error: failed to run `rustc` to learn about target-specific information
Caused by:
process didn't exit successfully: `rustc - --crate-name ___ --print=file-names -Zcodegen-backend=$REPO_ROOT/target/debug/deps/librustc_codegen_nvvm.so -Cllvm-args=-arch=compute_61 --target nvptx64-nvidia-cuda --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (exit status: 1)
--- stderr
error: couldn't load codegen backend "$REPO_ROOT/target/debug/deps/librustc_codegen_nvvm.so": "$REPO_ROOT/target/debug/deps/librustc_codegen_nvvm.so: undefined symbol: setupterm"
thread 'main' panicked at 'Did not find output file in rustc output', crates/cuda_builder/src/lib.rs:444:10
stack backtrace:
0: rust_begin_unwind
at /rustc/4e89811b46323f432544f9c4006e40d5e5d7663f/library/std/src/panicking.rs:517:5
1: core::panicking::panic_fmt
at /rustc/4e89811b46323f432544f9c4006e40d5e5d7663f/library/core/src/panicking.rs:100:14
2: core::panicking::panic_display
at /rustc/4e89811b46323f432544f9c4006e40d5e5d7663f/library/core/src/panicking.rs:64:5
3: core::option::expect_failed
at /rustc/4e89811b46323f432544f9c4006e40d5e5d7663f/library/core/src/option.rs:1637:5
4: core::option::Option<T>::expect
at /rustc/4e89811b46323f432544f9c4006e40d5e5d7663f/library/core/src/option.rs:708:21
5: cuda_builder::get_last_artifact
at $REPO_ROOT/crates/cuda_builder/src/lib.rs:432:16
6: cuda_builder::invoke_rustc
at $REPO_ROOT/crates/cuda_builder/src/lib.rs:417:20
7: cuda_builder::CudaBuilder::build
at $REPO_ROOT/crates/cuda_builder/src/lib.rs:238:20
8: build_script_build::main
at ./build.rs:4:5
9: core::ops::function::FnOnce::call_once
at /rustc/4e89811b46323f432544f9c4006e40d5e5d7663f/library/core/src/ops/function.rs:227:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
warning: build failed, waiting for other jobs to finish...
error: build failed
Any tips on what do here?
Versions:
- CUDA 11.4.2
- OptiX 7.3.0
- LLVM 7.1.0
- NVidia driver 470.63.01
- rustc 1.57.0-nightly (4e89811b4 2021-10-16)
About this issue
- Original URL
- State: open
- Created 3 years ago
- Comments: 34 (6 by maintainers)
LLVM_LINK_SHARED=1does work for me as well. Now the only issue I have is not findinglibcuda.I had the same issue and fixed it by setting this environment variable.
I think that this is all caused by trying to link llvm dynamically, we should probably always link statically in 0.3
It’s an environment variable, so for example:
or:
Setting this environment variable will force the build script to use
--link-sharedin the LLVM args: https://github.com/Rust-GPU/Rust-CUDA/blob/555c53123a8f9b78244ad1d9fb96ac8b1eca859f/crates/rustc_codegen_nvvm/build.rs#L122-L130I tried installing the
llvm-7-devAPT package on Ubuntu 18.04 and it also gives no output forllvm-config --system-libs. Is there some other build-time flag needed to get that work?Either way, it’s starting to look like a standard install of LLVM doesn’t report system libs this way. Maybe
link_llvm_system_libs()should find a different way to discover these libs?