Skip to content

Linking failures #88

@bnaecker

Description

@bnaecker

When using opteadm as a Git dependency in a project's Cargo.toml, we get linking errors. Things seem to work fine if the dependency is specified as a local, path-dependency. To reproduce, create a new binary:

$ cargo new --bin tst

With a Cargo.toml that looks like this:

[package]
name = "tst"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
opteadm = { git = "https://github.com/oxidecomputer/opte" }

I have the following minimal binary, in `src/main.rs:

fn main() {
    let _ = opteadm::OpteAdm::open(opteadm::OpteAdm::DLD_CTL).unwrap();
}

Running the package's binary fails at link:

bnaecker@feldspar : ~/tst $ cargo +nightly run
   Compiling tst v0.1.0 (/home/bnaecker/tst)
error: linking with `gcc` failed: exit status: 1
  |
  = note: "gcc" "-m64" "-std=c99" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f.1gpqo5y6xwwh5ghs.rcgu.o" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f.2j9b0easpuy3lmkm.rcgu.o" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f.3gn43d55b54eesvf.rcgu.o" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f.4au4nef3u6uykb3q.rcgu.o" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f.4mo6zhonh6hibyme.rcgu.o" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f.50oco8jau4nggglf.rcgu.o" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f.a259uc1t2xr6vh4.rcgu.o" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f.2xbcavjzg20r3tv7.rcgu.o" "-Wl,-z,ignore" "-L" "/home/bnaecker/tst/target/debug/deps" "-L" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib" "-Wl,-Bstatic" "/home/bnaecker/tst/target/debug/deps/libopteadm-ed4ebec202f4ac04.rlib" "/home/bnaecker/tst/target/debug/deps/liblibnet-20746b65a0c1aa47.rlib" "/home/bnaecker/tst/target/debug/deps/libnvpair-86698e07c8e6b879.rlib" "/home/bnaecker/tst/target/debug/deps/libnvpair_sys-3e491215f55562c3.rlib" "/home/bnaecker/tst/target/debug/deps/libforeign_types-f6b5afca31338a66.rlib" "/home/bnaecker/tst/target/debug/deps/libforeign_types_shared-984e5c51ce0f0c58.rlib" "/home/bnaecker/tst/target/debug/deps/libcstr_argument-785ee624af9de0c7.rlib" "/home/bnaecker/tst/target/debug/deps/libdlpi-f4fb8d05033217fb.rlib" "/home/bnaecker/tst/target/debug/deps/libnum_enum-a64b76e4a2b44370.rlib" "/home/bnaecker/tst/target/debug/deps/libsocket2-3b283ba9cd497e9e.rlib" "/home/bnaecker/tst/target/debug/deps/librusty_doors-524916c6b781492a.rlib" "/home/bnaecker/tst/target/debug/deps/libtracing-1c68e7f070b67704.rlib" "/home/bnaecker/tst/target/debug/deps/libcfg_if-385d26aca7d14e58.rlib" "/home/bnaecker/tst/target/debug/deps/libpin_project_lite-e8973c22a90577a2.rlib" "/home/bnaecker/tst/target/debug/deps/libtracing_core-50fa0fee84c6871d.rlib" "/home/bnaecker/tst/target/debug/deps/libcolored-9ea2386075d15489.rlib" "/home/bnaecker/tst/target/debug/deps/liblazy_static-caa99a9868af65b8.rlib" "/home/bnaecker/tst/target/debug/deps/libatty-217d37554bdf695c.rlib" "/home/bnaecker/tst/target/debug/deps/libopte_core-a9eafd55fd492016.rlib" "/home/bnaecker/tst/target/debug/deps/libanymap-94932fbd822a3e35.rlib" "/home/bnaecker/tst/target/debug/deps/libhashbrown-3ee81738fb11b578.rlib" "/home/bnaecker/tst/target/debug/deps/libahash-ea0262c66585ff9d.rlib" "/home/bnaecker/tst/target/debug/deps/libconst_random-14582242ea0e6c2a.rlib" "/home/bnaecker/tst/target/debug/deps/libpostcard-326332b7e9cab1aa.rlib" "/home/bnaecker/tst/target/debug/deps/libpostcard_cobs-4ead32620f584b18.rlib" "/home/bnaecker/tst/target/debug/deps/libheapless-5be6cd8261e12d53.rlib" "/home/bnaecker/tst/target/debug/deps/libstable_deref_trait-4cb687aceacb3a68.rlib" "/home/bnaecker/tst/target/debug/deps/libspin-b099bce116728165.rlib" "/home/bnaecker/tst/target/debug/deps/liblock_api-e698df25da0759aa.rlib" "/home/bnaecker/tst/target/debug/deps/libscopeguard-565e32347529b480.rlib" "/home/bnaecker/tst/target/debug/deps/libhash32-d0c190669e230bb4.rlib" "/home/bnaecker/tst/target/debug/deps/libillumos_ddi_dki-fe86c4415ee25292.rlib" "/home/bnaecker/tst/target/debug/deps/libsmoltcp-04f056c6b52ce7e2.rlib" "/home/bnaecker/tst/target/debug/deps/libbitflags-4d03e45c250cd080.rlib" "/home/bnaecker/tst/target/debug/deps/libmanaged-e2cfc91f6b787f02.rlib" "/home/bnaecker/tst/target/debug/deps/libzerocopy-2c8bd96196aba031.rlib" "/home/bnaecker/tst/target/debug/deps/libbyteorder-29a584d9778948bf.rlib" "/home/bnaecker/tst/target/debug/deps/libcstr_core-aed24baeafd4485e.rlib" "/home/bnaecker/tst/target/debug/deps/libmemchr-cb2aa58c9d871d55.rlib" "/home/bnaecker/tst/target/debug/deps/libcty-7cb5ecde0a0226c6.rlib" "/home/bnaecker/tst/target/debug/deps/libcfg_if-2f8775f3389269f7.rlib" "/home/bnaecker/tst/target/debug/deps/libthiserror-25ae4b3190cc3750.rlib" "/home/bnaecker/tst/target/debug/deps/libserde-c681115829c41256.rlib" "/home/bnaecker/tst/target/debug/deps/liblibc-13410709f55ff750.rlib" "-Wl,--start-group" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libstd-44ba11e7caeaa97b.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libpanic_unwind-f60c11ce2f3f2894.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libobject-2a6d17abf086d4e8.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libmemchr-28283bcf356a6b99.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libaddr2line-d4af3a6747ce39f4.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libgimli-abfba83daab33417.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/librustc_demangle-6d4e3a5e28938bae.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libstd_detect-188bd3d8afd99339.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libhashbrown-6205af1a1ba2b4fd.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libminiz_oxide-eb705613be612b49.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libadler-ccf005443048da69.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/librustc_std_workspace_alloc-5612a94d775dd7c1.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libunwind-45f9a318a4ba05a2.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libcfg_if-809e9a5223a42ae2.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/liblibc-8c850a53a00b4798.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/liballoc-9421d8315ee29563.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/librustc_std_workspace_core-5a6b7292ae0792e1.rlib" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libcore-bb36fb4d6ea14041.rlib" "-Wl,--end-group" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib/libcompiler_builtins-e250b29d90c73633.rlib" "-Wl,-Bdynamic" "-lkstat" "-lnvpair" "-lzfs" "-ldlpi" "-ldoor" "-lsendfile" "-llgrp" "-lsocket" "-lposix4" "-lpthread" "-lresolv" "-lnsl" "-lumem" "-lgcc_s" "-lm" "-lrt" "-lpthread" "-lc" "-lssp" "-L" "/home/bnaecker/.rustup/toolchains/nightly-x86_64-unknown-illumos/lib/rustlib/x86_64-unknown-illumos/lib" "-o" "/home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f" "-nodefaultlibs"
  = note: Undefined                 first referenced
           symbol                        in file
          nodev                               /home/bnaecker/tst/target/debug/deps/libillumos_ddi_dki-fe86c4415ee25292.rlib(illumos_ddi_dki-fe86c4415ee25292.illumos_ddi_dki.30bde569-cgu.0.rcgu.o)
          nulldev                             /home/bnaecker/tst/target/debug/deps/libillumos_ddi_dki-fe86c4415ee25292.rlib(illumos_ddi_dki-fe86c4415ee25292.illumos_ddi_dki.30bde569-cgu.0.rcgu.o)
          ld: fatal: symbol referencing errors. No output written to /home/bnaecker/tst/target/debug/deps/tst-9d56c2ce4c177f1f
          collect2: error: ld returned 1 exit status


error: could not compile `tst` due to previous error

Cloning this repo and specifying it as a path dependency builds just fine. Changing the one dependency in Cargo.toml to:

opteadm = { path = "../opte/opteadm" }

we can build and run the binary successfully:

bnaecker@feldspar : ~/tst $ cargo +nightly run
   Compiling tst v0.1.0 (/home/bnaecker/tst)
    Finished dev [unoptimized + debuginfo] target(s) in 0.80s
     Running `target/debug/tst`

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions