He estado hoy para explorar la API openSSL para RSA. Ese es el código simple:Openssl para RSA: referencia indefinida a RSA_new
#include<stdio.h>
#include<openssl/rsa.h>
#include<openssl/engine.h>
int main() {
RSA *rsa;
rsa = RSA_new_();
RSA_free(rsa);
return 0;
}
y estoy compilando con
gcc -I/usr/local/ssl/incluir -o, etc, etc
pero gcc error de retorno de undefining referencia a RSA_new y RSA_free. Revisé el encabezado rsa.h y no hay ninguna referencia a esta función. ¿Qué pasa? he seguir la guía de referencia en el sitio web openssl ...
EDIT: salida de gcc:
gcc -I/usr/local/ssl/include/-o RSA rsa.c -L/usr/local/ssl/lib -lcrypto /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): En la función
dlfcn_globallookup': dso_dlfcn.c:(.text+0x1d): undefined reference to
dlopen ' dso_dlfcn.c :(. text + 0x33): referencia no definida adlsym' dso_dlfcn.c:(.text+0x3d): undefined reference to
dlclose ' /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): En la funcióndlfcn_bind_func': dso_dlfcn.c:(.text+0x3b1): undefined reference to
dlsym' dso_dlfcn.c :(. text + 0x490): referencia indefinida adlerror' /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function
dlf cn_bind_var ':. dso_dlfcn.c :(texto + 0x511): referencia indefinida adlsym' dso_dlfcn.c:(.text+0x5f0): undefined reference to
dlerror' /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): En funcióndlfcn_load': dso_dlfcn.c:(.text+0x667): undefined reference to
dlopen' dso_dlfcn.c: (.text + 0x6de): referencia indefinida adlclose' dso_dlfcn.c:(.text+0x715): undefined reference to
dlerror. ' /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): En funcióndlfcn_pathbyaddr': dso_dlfcn.c:(.text+0x7b1): undefined reference to
dladdr' dso_dlfcn.c :(texto + 0x819): indefinido referencia adlerror' /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function
dlfcn_unload ': dso_dlfcn.c :(texto + 0x87a):. undefined reference to `dlclose' collect2: ld devuelto 1 código de salida
Es necesario enlazar con la biblioteca de 'ssl'. No estoy seguro de cuál es su nombre, pero intente agregar '-lssl' al final de su comando de compilación. – hmjd