Linkage failure on linux
Closed this issue · 2 comments
tuxzz commented
[dependencies]
cblas = "*"
netlib-src = { version = "*", default-features = false, features = ["cblas", "system"] }fn main() {
let a = vec![1.0f32; 8];
unsafe { cblas::snrm2(a.len() as i32, &a, 1); }
}Resulting an error:
$ cargo build
Compiling rust-blas v0.1.0 (/home/tuxzz/poc/rust-blas)
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.18qlvp4dbl4s0gj2.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.1eahu98ph07316qm.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.1ezc2vmv7s5ru7rm.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.1fdykw0ac4npa5az.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.1h7os38yeevxs5tk.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.1ny7ca0iirvbq3pf.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.1ut6nuxidfm8uelo.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.26apgbnaz02wequt.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.26i2bcgq8uwvottg.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.2bxyxtf8mscpmoz.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.2dfltqopn0tunul2.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.2mekxuhytjv4s2bt.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.2q10ri1qca3gwbkf.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.2x0y1ub6177jyter.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.31610v930zn5bu4d.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.32lvrvc909awx003.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.3pifva4lulj6zdz3.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.3qs75y6gblw1jrwq.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.3sy5kc1ixftr3rjd.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.41kc695ic5mo8so.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.46dgsg4ix0xrm5u4.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.4ci7fmysluywoznd.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.4kmpuzaihhewowrj.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.4m3p5kjmjmmlysfi.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.4rq24av4prscqtzk.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.4v91nbbkxdeycv3u.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.53n7k3s5z6jyoqj8.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.5chsw1owog6tyc40.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.5gp3kml6f3w73r56.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.6c7xrb3twfh1tix.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.gnsbyflb6bge5ri.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.niaf3eqw6f20n2d.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.rxf2pmjpoxgbqm8.rcgu.o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.z0csw4x93t50z75.rcgu.o" "-o" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2" "/home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.pzlvo6nkfsaaha9.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/home/tuxzz/poc/rust-blas/target/debug/deps" "-L" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/tuxzz/poc/rust-blas/target/debug/deps/libcblas-7fbd6ed95737cf05.rlib" "/home/tuxzz/poc/rust-blas/target/debug/deps/libnum_complex-886b7a6b2347a0e3.rlib" "/home/tuxzz/poc/rust-blas/target/debug/deps/libnum_traits-8a9b8068cf58520d.rlib" "/home/tuxzz/poc/rust-blas/target/debug/deps/libcblas_sys-394b55ed1fa9dc91.rlib" "/home/tuxzz/poc/rust-blas/target/debug/deps/liblibc-9aeb34673f323208.rlib" "-Wl,--start-group" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-7d65a344221c409b.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-54df1a0c3024f5bd.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-bb312de2a5d7d307.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-60c21d234379de22.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-045480d965da2c45.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-8ec1303a38498da9.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-18658537df359212.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-b87be9f0e57bd4bf.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-3a677d13d4ec517d.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-ac41f78688451395.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-f11f1597d535049a.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-428d15b56101bdc7.rlib" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-941f7f6bc622e313.rlib" "-Wl,--end-group" "/home/tuxzz/.rustup/toolchains/nightly-2020-05-09-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-e77b8f5da9460407.rlib" "-Wl,-Bdynamic" "-lutil" "-ldl" "-lutil" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-ldl" "-lutil"
= note: /usr/bin/ld: /home/tuxzz/poc/rust-blas/target/debug/deps/rust_blas-6246d4e047004fe2.32lvrvc909awx003.rcgu.o: in function `cblas::snrm2':
/home/tuxzz/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/cblas-0.2.0/src/lib.rs:194: undefined reference to `cblas_snrm2'
collect2: error: ld returned 1 exit status
error: aborting due to previous error
error: could not compile `rust-blas`.
To learn more, run the command again with --verbose.
Obviously, there is a -lcblas parameter missing.
Just like evpobr/sndfile-sys#5, only for linux, if we add this
#[link(name = "cblas")]
extern "C" {}It should be fixed.
The same problem exists in all other packages of blas-lapack-rs.
OS: Archlinux
Rust toolchain: nightly-2020-05-09-x86_64-unknown-linux-gnu
BLAS: cBLAS 3.9.0 (from blis 0.7.0)
tuxzz commented
I have no enough time to fix and test on packages other than cblas-sys, the PR of cblas-sys is coming. Please fix other packages too if you have time.