Try fs::canonicalize just in case (or dunce to also support Windows).
It's slightly problematic that the path is outside of your crate. You don't really control where your crate is. If it was published, it would have been inside registry cache in Cargo's private directory. Ideally you should copy stuff to OUT_DIR if you generate it, or expect stuff to be in system-wide directories like /usr/lib which you search for with pkg-config, etc.
If using fs::canonicalize path doesn't work either, then the problem is not the fact that the path is relative.
Your build.rs lacks rustc-link-lib=static=mylib. Have you just omitted that part in the question, or are you trying to use build.rs of one crate to fix bad paths in another crate? I think you should link and set search path in the same script.
Have you tried
cargo build --verbose
and see what linker command it builds? Are all dirs there?