Referência indefinida para RSA_generate_key no OpenSSL? [duplicado
Esta pergunta já tem uma resposta aqui:
Links libssl e libcrypto no GCC [duplicado] 2 respostasTenho o seguinte código no arquivorsatest.c
. Estou tentando gerar um par de chaves RSA.
#include <openssl/rsa.h>
#include <openssl/pem.h>
int main(){
RSA *rsa = RSA_generate_key((const int) 1024,(const int) 3, 0, 0);
return 0;
}
Estou compilando isso com
gcc -I../include/ -L . -lcrypto -lssl rsatest.c
e recebo o seguinte erro.
undefined reference to `RSA_generate_key'
Estou ligando os arquivos da biblioteca na ordem errada? Criei o libcrypto.a e o libssl.a no Windows (64 bits), com msys e mingw, e estou executando o código no mesmo sistem
RSA_generate_key foi declarado em rsa.h. Não está definido no libcrypto.a?
EDIT:
Eu tentei isso também,
gcc -I../include rsatest.c -L . -lcrypto -lssl
e compreendo que o vinculador procurará definições nas bibliotecas da esquerda para a direit
o entanto, recebo novas referências indefinidas para várias funções no
rand_win.o and c_zlib.o
Procurei on-line e encontrei os símbolos ausentes nas bibliotecas gdi32 e zlib. Então eu adicionei
-lz and -lgdi32
O compilador não se queixou de uma biblioteca ausente, então suponho que eles estejam presentes com o mingw. E ainda assim, recebo a mesma saída.
Eu também usei nm e descobri que os símbolos eram realmente indefinidos em rand_win.o e c_zlib.
Por que o vinculador não parece encontrar definições nessas biblioteca