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 respostas

Tenho 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

questionAnswers(1)

yourAnswerToTheQuestion