Hi,
I'm trying out this example of sodiumoxide. Sodiumoxide is a wrapper around a C library, libsodium.
My Cargo.toml:
[dependencies]
sodiumoxide = "0.2.6"
The code:
use sodiumoxide::crypto::sign;
fn main() {
// sodiumoxide::crypto::sign::gen_keypair() generates a ed25519 keypair
let (public_key, secret_key) = sign::gen_keypair();
println!("public key: {},\nsecret key:{}", public_key, secret_key);
}
This looks simple. By the way, I use arch and I'm fairly confident I have all the packages needed to compile C on my machine. And yet:
$ cargo run
Compiling libsodium-sys v0.2.6
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-Wl,--eh-frame-hdr" "-L" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.0.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.1.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.10.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.11.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.12.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.13.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.14.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.15.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.2.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.3.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.4.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.5.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.6.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.7.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.8.rcgu.o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.9.rcgu.o" "-o" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36" "/home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.3y22lsazyrrrr1w8.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/home/emmanuel/play_with_sodiumoxide/target/debug/deps" "-L" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/emmanuel/play_with_sodiumoxide/target/debug/deps/libpkg_config-08e181705ad3f905.rlib" "/home/emmanuel/play_with_sodiumoxide/target/debug/deps/libcc-d4558b233ebd76ba.rlib" "-Wl,--start-group" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-b1047a2788193be4.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e8e399e2092f3b2a.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-c6b02b522c91c060.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-eaad965909c4200f.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-dca728ac8ed54d87.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-4b4efaa8c4601753.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-d36e07ed2cc56ee4.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-3855d04b1bb40ceb.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-58a065cdff5508a2.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-82aeeedcc8d1450a.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-5c4d6c9d7595f844.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-2642d2bccc00517a.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-760e48b3f782e7f5.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-d4ef8bf89076ed01.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-36070e2029bb21ea.rlib" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-3aaf8f932781f33e.rlib" "-Wl,--end-group" "/home/emmanuel/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-e2523c360f03ba10.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc"
= note: /usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36.build_script_build.74h5xmn7-cgu.0.rcgu.o: in function `build_script_build::make_libsodium':
/home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:139: undefined reference to `std::process::Command::new'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:139: undefined reference to `std::process::Command::arg'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:227: undefined reference to `std::process::Command::arg'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:229: undefined reference to `std::process::Command::arg'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:229: undefined reference to `std::process::Command::arg'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:229: undefined reference to `std::process::Command::arg'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:229: undefined reference to `std::process::Command::arg'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:249: undefined reference to `std::process::Command::new'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:250: undefined reference to `std::process::Command::env'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:250: undefined reference to `std::process::Command::arg'
/usr/bin/ld: /home/emmanuel/.cargo/registry/src/github.com-1ecc6299db9ec823/libsodium-sys-0.2.6/build.rs:250: undefined reference to `std::process::Command::arg'
// et caetera
/cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:850: undefined reference to `core::mem::swap'
/usr/bin/ld: /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:857: undefined reference to `core::mem::forget'
/usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/deps/libcc-d4558b233ebd76ba.rlib(cc-d4558b233ebd76ba.cc.82kw3qhk-cgu.1.rcgu.o): in function `hashbrown::raw::RawTable<T>::rehash_in_place':
/cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:850: undefined reference to `core::mem::swap'
/usr/bin/ld: /cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:857: undefined reference to `core::mem::forget'
/usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/deps/libcc-d4558b233ebd76ba.rlib(cc-d4558b233ebd76ba.cc.82kw3qhk-cgu.1.rcgu.o): in function `hashbrown::raw::RawTable<T>::rehash_in_place::{{closure}}':
/cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:792: undefined reference to `core::mem::needs_drop'
/usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/deps/libcc-d4558b233ebd76ba.rlib(cc-d4558b233ebd76ba.cc.82kw3qhk-cgu.1.rcgu.o): in function `hashbrown::raw::RawTable<T>::rehash_in_place::{{closure}}':
/cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:792: undefined reference to `core::mem::needs_drop'
/usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/deps/libcc-d4558b233ebd76ba.rlib(cc-d4558b233ebd76ba.cc.82kw3qhk-cgu.1.rcgu.o): in function `hashbrown::raw::RawTable<T>::rehash_in_place::{{closure}}':
/cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:792: undefined reference to `core::mem::needs_drop'
/usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/deps/libcc-d4558b233ebd76ba.rlib(cc-d4558b233ebd76ba.cc.82kw3qhk-cgu.1.rcgu.o): in function `hashbrown::raw::RawTable<T>::resize':
/cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:907: undefined reference to `core::mem::swap'
/usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/deps/libcc-d4558b233ebd76ba.rlib(cc-d4558b233ebd76ba.cc.82kw3qhk-cgu.1.rcgu.o): in function `hashbrown::raw::RawTable<T>::resize':
/cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:907: undefined reference to `core::mem::swap'
/usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/deps/libcc-d4558b233ebd76ba.rlib(cc-d4558b233ebd76ba.cc.82kw3qhk-cgu.1.rcgu.o): in function `hashbrown::raw::RawTable<T>::resize':
/cargo/registry/src/github.com-1ecc6299db9ec823/hashbrown-0.9.0/src/raw/mod.rs:907: undefined reference to `core::mem::swap'
/usr/bin/ld: /home/emmanuel/play_with_sodiumoxide/target/debug/build/libsodium-sys-855381991d427f36/build_script_build-855381991d427f36: hidden symbol `_ZN5alloc6string6String19from_utf8_unchecked17h25854281bdf733adE' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
error: aborting due to previous error
error: could not compile `libsodium-sys`
To learn more, run the command again with --verbose.
What am I missing here?