From bf16c19f315c83fe4b329730f03e568cbf4c47f9 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 1 Sep 2015 11:12:22 -0700 Subject: [PATCH] Swap order of linking ssl/crypto GNU linkers will sometimes aggressively try to strip objects and archives from a linker command line in a left-to-right fashion. When a linker hits an object file that doesn't satisfy any unresolved symbols, it will discard the object and not re-visit it. This means that currently if symbols are depended upon in libssl then some of the dependencies of libssl (in libcrypto) may have already been stripped, causing a link error. By swapping the order of what's linked it reflects the natural flow of dependencies and the linker should figure everything out for us. --- openssl-sys/build.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openssl-sys/build.rs b/openssl-sys/build.rs index b4a00566..5f934888 100644 --- a/openssl-sys/build.rs +++ b/openssl-sys/build.rs @@ -36,12 +36,12 @@ fn main() { Some(ref v) => v.split(":").collect(), None => if target.contains("windows") { if get_mingw_in_path().is_some() && lib_dir.is_none() && include_dir.is_none() { - vec!("eay32", "ssleay32") + vec!["ssleay32", "eay32"] } else { - vec!("eay32", "ssl32") + vec!["ssl32", "eay32"] } } else { - vec!("crypto", "ssl") + vec!["ssl", "crypto"] } };