Errors that refer to a bunch of unresolved OpenSSL symbols that clearly exist?
The problem was caused by the order of the libraries in the link command. Switching the order of libcrypto.a
and libssl.a
resolved all of the symbols.
GCC uses LD
by default, and its a single pass linker. When you have two libraries, like libssl
and libcrypto
linked in a particular order, it means libssl
depends on symbols from libcrypto
. Therefore, libssl
must precede libcrypto
(or libcrypto
must follow libssl
). It should be no surprise libssl
relies upon libcrypto
since libcrypto
provides the crypto used by libssl
.