undefined reference to `dlopen‘ ‘SSL_library_init‘ `X509_certificate_type‘

使用Crow的时候需要注意crow依赖asio依赖OpenSSL,asio要求1.22以上版本,我使用的是1.26.0;

这个版本的asio要求OpenSSL是1.0.2,其他版本我得机器上编不过,ubuntu上默认带的OpenSSL是1.1.1;

所以我下载了OPENSSL1.2.0重装,地址: https://www.openssl.org/source/old/

编译cpp启用Crow的SSL时会出现一些问题:

比如:

  • 1 undefined reference to `SSL_library_init'

出现这个提示需要在编译时指定链接 crypto 和 ssl 库

  • 2 undefined reference to `dlopen'

出现这个提示需要在编译时指定链接 dl 库

  • 3 undefined reference to `X509_certificate_type'

出现这个提示需要在编译时指定链接openssl的位置;

  • 4 以上需要指定的库和地址都加上之后还是报错,可能是指令顺序问题;
    例如

    // ×
    g++ example_ssl.cpp -L/usr/local/openssl/lib -lssl -ldl -lcrypto -DCROW_ENABLE_SSL=1 -o ssl_example -std=c++11 -lpthread

    // √
    g++ example_ssl.cpp -L/usr/local/openssl/lib -lssl -lcrypto -DCROW_ENABLE_SSL=1 -o ssl_example -std=c++11 -lpthread -ldl

上面两行只是调整了 -ldl 所在的位置,就会消除部分错误,

具体原因参考

https://qastack.cn/programming/956640/linux-c-error-undefined-reference-to-dlopen

https://stackoverflow.com/questions/11893996/why-does-the-order-of-l-option-in-gcc-matter/11894098#11894098

相关推荐
勇往直前plus19 小时前
Docker 拉取镜像:SSL 拦截与国内镜像源失效问题解决
docker·容器·https·ssl
chen36732 天前
[Comake][D1][AI_AO][bf_ssl_demo]
网络·网络协议·ssl
微小冷3 天前
WireShark抓包http,解密https
http·https·edge·wireshark·ssl·解密
普普通通的南瓜3 天前
《国家安全法》下的 SSL 证书定位:网络数据加密的 “法定基石”
网络·php·ssl
问道飞鱼3 天前
【知识科普】完整的 SSL 证书文件体系
网络协议·https·证书·ssl
2501_938963963 天前
服务器数据库安全:MySQL 开启 SSL 连接,禁止远程 root 登录并限制 IP 访问
服务器·mysql·ssl
普普通通的南瓜4 天前
金融交易防护:国密 SSL 证书在网银与移动支付中的核心作用
网络·网络协议·安全·arcgis·gitlab·ssl·源代码管理
运维行者_6 天前
运维实战:SSL 证书故障避坑指南(精简版)
运维·网络协议·ssl
TG:@yunlaoda360 云老大7 天前
腾讯云国际站SSL:腾讯云SSL证书的SSL握手过程,如何实现高效的身份验证?
云计算·腾讯云·ssl
普普通通的南瓜7 天前
政务领域应用:国密 SSL 证书如何守护 “一网通办” 的数据安全?
https·ssl·政务