Неопределенная ссылка на RSA_generate_key в OpenSSL? [Дубликат]

На этот вопрос уже есть ответ:

Связывание libssl и libcrypto в GCC [дубликаты] 2 ответа

У меня есть следующий код в файлеrsatest.c. Я пытаюсь сгенерировать пару ключей 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;
}

Я собираю это с

gcc -I../include/ -L . -lcrypto -lssl rsatest.c

и я получаю следующую ошибку.

 undefined reference to `RSA_generate_key'

Я связываю файлы библиотеки в неправильном порядке? Я сделал libcrypto.a и libssl.a для Windows (64-битная версия) с msys и mingw, и я запускаю код в той же системе.

RSA_generate_key объявлен в rsa.h. Разве это не определено в libcrypto.a?

РЕДАКТИРОВАТЬ

Я тоже это пробовал,

gcc -I../include rsatest.c -L . -lcrypto -lssl

и я понимаю, что компоновщик будет искать определения в библиотеках слева направо.

Однако я получаю новые неопределенные ссылки на различные функции в

rand_win.o and c_zlib.o

Я посмотрел онлайн и нашел недостающие символы в библиотеках gdi32 и zlib. Поэтому я добавил

-lz and -lgdi32

Компилятор не жаловался на отсутствующую библиотеку, поэтому я предполагаю, что они присутствуют в mingw. И все же, я получаю тот же вывод.

Я также использовал nm и обнаружил, что символы действительно не определены в rand_win.o и c_zlib.o.

Почему компоновщик не может найти определения в этих библиотеках?

Ответы на вопрос(1)

Ваш ответ на вопрос