Añadir -L /usr/local/ssl/lib/
en la línea de comandos de GCC, antes del -lcrypto
. Dado que está compilando contra los encabezados de OpenSSL en /usr/local/ssl
, también debe vincularse con la biblioteca real con el mismo prefijo (aunque parece que solo tiene una estática instalada allí, esa puede ser su intención o no; es posible que deba reinstalar correctamente su OpenSSL compilado desde la fuente).
(editar) Para arreglar el dlopen()
y amigos no encontrados por el enlazador, agregue -ldl
en la línea de comando GCC. -ldl
le dice al enlazador que también enlace contra libdl.so, que es la biblioteca compartida que contiene dlopen()
, dlsym()
, dlclose()
etc.; estas funciones son utilizadas por OpenSSL internamente y, por lo tanto, -ldl
es una dependencia indirecta cuando se usa -lcrypto
(en Linux). Debido a que está vinculando a una versión estática de libcrypto, debe vincular explícitamente todas las dependencias indirectas.
Si no está familiarizado con la vinculación a las bibliotecas adecuadas, le sugiero que use OpenSSL instalado desde el administrador de paquetes de su sistema operativo; podría ahorrarle algunos problemas.
Esto podría ser relevante para las personas que intentaron compilar su propio openssl desde el código fuente y luego usarlo para compilar otros programas (en mi caso, Git)
Durante la configuración de openssl, agregue la opción 'compartida':
./config shared
Esto creará la biblioteca compartida requerida libcrypto.so
. Encontrará más en el archivo INSTALL.
Además, si te encuentras con este error durante 'make'
"....can not be used when making a shared object
recompilar con -fPIC
./config shared -fPIC