链接OpenSSL时不引用BIO-functions

nkhmeac6  于 2023-04-11  发布在  其他
关注(0)|答案(2)|浏览(147)

我想用openssl-references编译一个c程序。我使用的是Linux Mint 17.1,并且安装了开发包“libssl-dev”。

#include <openssl/bio.h>
#include <openssl/err.h>
#include <openssl/ssl.h>
...

void send_smtp_request(BIO *bio, const char *req)
{
    BIO_puts(bio, req);
    BIO_flush(bio);
    printf("%s", req);     
}

如果我编译代码:

gcc -o client bio-ssl-smtpcli2.c

我得到这个错误:

/tmp/ccCHrti2.o: In function 'send_smtp_request':
bio-ssl-smtpcli2.c:(.text+0x1f):  undefined reference to 'BIO_puts'
bio-ssl-smtpcli2.c:(.text+0x3a):  undefined reference to 'BIO_ctrl'

有人知道怎么解决吗?

xqnpmsa8

xqnpmsa81#

我通过使用以下命令编译了你的函数:

gcc main.c -o main -I /usr/local/ssl/include -L /usr/local/ssl/lib -lssl -lcrypto -Wall

更多解释:

  • -I /usr/local/ssl/include/usr/local/ssl/include添加到包含搜索路径。
  • -L /usr/local/ssl/lib/usr/local/ssl/lib添加到库搜索路径。
  • -lssl -lcrypto链接库libcrypto和libssl
  • -lcrypto必须跟在-lssl后面,因为ld是单通道链接器
  • Wall启用所有警告。

我的猜测是你错过了-lcrypto

cyvaqqii

cyvaqqii2#

put -lssl in front of -lcrypto解决了我的问题,谢谢!

相关问题