When cross compiling you need to provide both a target and a sysroot (a place where all the target libraries can be found). Both cargo and rustc should provide a way to set these. rustc's --sysroot might be buggy or rust specific, see rust-lang/rust#31180 and it does not pass it on to the linker.