这是Undefined reference to RSA_generate_key in OpenSSL?的后续问题我有一个生成RSA密钥的OpenSSL程序,如下所示:
#include <stdio.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
int main(int argc, char* argv[])
{
RSA *r = NULL;
int ret;
r = RSA_new();
BIGNUM *bne = NULL;
ret = RSA_generate_key_ex(r, 2048, bne, NULL);
return 0;
}
当我用
编译时gcc -I../include rsatest.c -lcrypto -L.
我在库gdi32和zlib中的函数中得到未定义的引用错误。
所以要纠正这个问题,我必须添加-lz和-lgdi32,作为
gcc -I../include/ rsatest.c -lcrypto -lz -lgdi32 -L.
我的问题是,静态的libcrypto和libssl自给自足吗?为什么我必须添加额外的库来使其工作?在编译库时我是否应该添加一个选项来防止这种情况?
我使用带有MinGW编译器的64位Windows。我在MSYS的帮助下制作了OpenSSL库并制作了。