我今天开始探索 RSA 的 openSSL api。这是简单的代码:
#include<stdio.h>
#include<openssl/rsa.h>
#include<openssl/engine.h>
int main() {
RSA *rsa;
rsa = RSA_new_();
RSA_free(rsa);
return 0;
}
我正在编译
gcc -I /usr/local/ssl/include -o 等等
但 gcc 返回未定义对 RSA_new 和 RSA_free 的引用的错误。我检查了 rsa.h 标头,并没有引用这两个函数。怎么了?我已经按照openssl网站上的参考指南...
编辑: 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):在函数中
dlfcn_globallookup': dso_dlfcn.c:(.text+0x1d): undefined reference to
dlopen' dso_dlfcn.c:(.text+0x33): undefined reference todlsym' dso_dlfcn.c:(.text+0x3d): undefined reference to
dlclose' /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In functiondlfcn_bind_func': dso_dlfcn.c:(.text+0x3b1): undefined reference to
dlsym' dso_dlfcn.c:(.text+0x490) : 对dlerror' /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function
dlfcn_bind_var' 的未定义引用:dso_dlfcn.c:(.text+0x511): 对dlsym' dso_dlfcn.c:(.text+0x5f0): undefined reference to
dlerror'/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o) 的未定义引用:在函数dlfcn_load': dso_dlfcn.c:(.text+0x667): undefined reference to
dlopen' dso_dlfcn.c:( .text+0x6de): 对dlclose' dso_dlfcn.c:(.text+0x715): undefined reference to
dlerror 的未定义引用'/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): 在函数dlfcn_pathbyaddr': dso_dlfcn.c:(.text+0x7b1): undefined reference to
dladdr' dso_dlfcn.c:(.text+0x819): 未定义的引用dlerror' /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function
dlfcn_unload': dso_dlfcn.c:(.text+0x87a): undefined reference to `dlclose' collect2: ld 返回 1 exit status