Fail of compile linking with cc

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?

Which OS are you using?

For what it is worth, it worked for me on Ubuntu 20 on Intel x86. I did have to change to debug formatting with {:?}:

println!(&quot;public key: {:?},\nsecret key:{:?}&quot;, public_key, secret_key);

There are also a couple libraries I installed for a previous project when I had compile issues:

$ sudo apt-get install build-essential
$ sudo apt-get install pkg-config libssl-dev

I use Arch linux, and I don't see which additionnal libraries to install, since I regularly compile AUR packages.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.