// rustc will remove one of the two redundant references to foo below. Depending // on which one gets removed, we'll get a linker error on SOME platforms (like // Linux). On these platforms, when a library is referenced, the linker will // only pull in the symbols needed _at that point in time_. If a later library // depends on additional symbols from the library, they will not have been pulled // in, and you'll get undefined symbols errors. // // So in this example, we need to ensure that rustc keeps the _later_ reference // to foo, and not the former one. //@ ignore-cross-compile // Reason: the compiled binary is executed use run_make_support::{build_native_dynamic_lib, build_native_static_lib, run, rustc}; fn main() { build_native_dynamic_lib("foo"); build_native_static_lib("bar"); build_native_static_lib("baz"); rustc() .args(&["-lstatic=bar", "-lfoo", "-lstatic=baz", "-lfoo"]) .input("main.rs") .print("link-args") .run(); run("main"); }