Skip to content

Linking error unless 'use'd #26872

Closed
Closed
@TheNeikos

Description

@TheNeikos

While working on a sample game with rust I encountered a strange bug which I believe to be a corner case of the setup I have. I am unable to recreate it in a simpler crate, so I am going to submit the code as I have it right now, hoping someone else might spot what is going wrong.

I have created a branch on my project that should reproduce this bug: https://github.com/TheNeikos/rpg/tree/error-linker

If you comment in line 13 in lib.rs it will compile.

Output of cargo run in that project:

neikos@celestias-palace ~/p/r/rpg> cargo run
   Compiling server v0.1.0 (file:///home/neikos/projects/rust/rpg)
<<<< Lots of warnings about unused stuff >>>>
error: linking with `cc` failed: exit code: 1
note: "cc" "-Wl,--as-needed" "-m64" "-L" "/usr/lib64/rustlib/x86_64-unknown-linux-gnu/lib" "/home/neikos/projects/rust/rpg/target/debug/rpg.o" "-o" "/home/neikos/projects/rust/rpg/target/debug/rpg" "-Wl,--whole-archive" "-l" "morestack" "-Wl,--no-whole-archive" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "/home/neikos/projects/rust/rpg/target/debug/deps/libserver-503340237efbae24.rlib" "/home/neikos/projects/rust/rpg/target/debug/deps/libshared-9e1f1e1585409fc5.rlib" "/home/neikos/projects/rust/rpg/target/debug/deps/libclock_ticks-995f487ba7426efb.rlib" "/home/neikos/projects/rust/rpg/target/debug/deps/liblibc-ef5cbad4ef5c7a1e.rlib" "/home/neikos/projects/rust/rpg/target/debug/deps/libbincode-1533ee1770371aad.rlib" "/home/neikos/projects/rust/rpg/target/debug/deps/librustc_serialize-c1e8163a38ed3d54.rlib" "/home/neikos/projects/rust/rpg/target/debug/deps/libbyteorder-399c175f6a7726ac.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-74fa456f.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-74fa456f.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_unicode-74fa456f.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-74fa456f.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-74fa456f.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-74fa456f.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-74fa456f.rlib" "-L" "/home/neikos/projects/rust/rpg/target/debug" "-L" "/home/neikos/projects/rust/rpg/target/debug/deps" "-L" "/usr/lib64/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/home/neikos/projects/rust/rpg/.rust/lib64/x86_64-unknown-linux-gnu" "-L" "/home/neikos/projects/rust/rpg/lib64/x86_64-unknown-linux-gnu" "-Wl,-Bstatic" "-Wl,-Bdynamic" "-l" "rt" "-l" "c" "-l" "m" "-l" "dl" "-l" "pthread" "-l" "rt" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "compiler-rt"
note: /home/neikos/projects/rust/rpg/target/debug/rpg.o: In function `rpg::main':
/home/neikos/projects/rust/rpg/src/main.rs:42: undefined reference to `player::Player::get_id::hf61907f5ded04b74cfa'
collect2: error: ld returned 1 exit status

error: aborting due to previous error
Could not compile `rpg`.

To learn more, run the command again with --verbose.
neikos@celestias-palace ~/p/r/rpg> cargo -V
cargo 0.4.0-nightly (90422d6 2015-07-07) (built 2015-07-06)
neikos@celestias-palace ~/p/r/rpg> 

I think I am right to assume that rustc should error rather than the linker, as I found out the fix for this by random chance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions