12

After adding the link options: -lssl and -lcrypto, my program was correctly compiled. However, I found GCC doesn't include the two options, so where do the options come from?

Matt Elson
  • 4,177
  • 8
  • 31
  • 46
  • Releated, see [Errors that refer to a bunch of unresolved OpenSSL symbols that clearly exist?](http://stackoverflow.com/q/15318978). – jww Jan 25 '17 at 01:03

1 Answers1

13

The GCC documentation tells us that -l is the option to link with a library.

-llibrary
-l library
Search the library named library when linking. (The second alternative with the
library as a separate argument is only for POSIX compliance and is not
recommended.)

So you're telling gcc to link with the libraries "ssl" and "crypto". These libraries are typically installed in /usr/lib. On Linux they'll be called libssl.so and libcrypto.so. On OS X they'll be called libssl.dylib and libcrypto.dylib.

indiv
  • 17,306
  • 6
  • 61
  • 82
  • On Cygwin they'll be called libssl.a and libcrypto.a – Matt Elson Jan 12 '12 at 06:41
  • For static linking use additional parameters like this **-static -lcrypto -lz -ldl -static-libgcc** (source: https://stackoverflow.com/a/25811538/4410376) – Hack06 Jun 11 '18 at 21:40