我在Ubuntu 14.04中预先安装了openssl版本
OpenSSL 1.0.1f 6 Jan 2014
这是Ubuntu中最新的一个。
现在问题发生在SSL_library_init();
之后,当我编译它显示的代码时,我呼吁DTLSv1_2_client_method();
:
DTLS_test.c:20:12: warning: assignment makes pointer from integer without a cast [enabled by default]
method = DTLSv1_2_client_method();
^
/tmp/ccRUlnEu.o: In function `init_lib':
DTLS_test.c:(.text+0x13): undefined reference to `DTLSv1_2_client_method'
collect2: error: ld returned 1 exit status
但如果我改为method = DTLSv1_client_method();
它只显示与演员相关的警告
DTLS_test.c:20:12: warning: assignment makes pointer from integer without a cast [enabled by default]
method = DTLSv1_2_client_method();
^
代码段如下:
#include <openssl/ssl.h>
#include <openssl/bio.h>
#include <openssl/err.h>
#include <openssl/rand.h>
#include <openssl/dtls1.h>
#include "DTLS_test.h"
void init_lib (void) {
if(SSL_library_init()) {
printf("\n[OK] SSL library initialized");
}
else {
printf("\n[ERROR] SSL library initiate FAILED !");
exit(0);
}
SSL_METHOD *method = NULL;
method = DTLSv1_2_client_method();
SSL_CTX *ctx = NULL;
ctx = SSL_CTX_new(method);
if(ctx != NULL) {
printf("\n[OK] SSL Method created");
}
else {
printf("\n[ERROR] SSL Method FAILED !");
exit(0);
}
}
void main (void) {
init_lib ();
printf("\n");
}
我也从git下载了openssl源码并安装了但是openssl版本没有改变。我无法编译。有人建议修理吗?
答案 0 :(得分:2)
OpenSSL 1.0.1不支持DTLSv1.2。你需要有1.0.2。
您尝试从git安装哪个版本?默认情况下,安装自己时,OpenSSL将安装到&#34; / usr / local / ssl&#34;。它不会取代OpenSSL的系统版本,因此您需要确保使用相应的包含/库路径 - 否则您将只选择旧的系统版本。
编译:
gcc DTLS_test.c -I/usr/local/ssl/include -L/usr/local/ssl/lib -o DTLS_test -lssl -lcrypto