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

相关推荐
吠品4 小时前
UniApp Vue3中实现rem自适应布局:动态基准值与设计稿适配实践
tcp/ip·https·ssl
Monkey-旭6 小时前
Java HTTP证书全用法详解:原理、配置、实战与问题排查
java·开发语言·http·证书·ssl
成空的梦想3 天前
ZLibrary反爬机制实战分析的技术文章大纲
网络协议·https·ssl
BUG胡汉三4 天前
Java内网代理访问HTTPS接口SSL证书不匹配
java·https·ssl
人生匆匆6 天前
配置nginx ssl反向代理tcp端口
tcp/ip·nginx·ssl
学习3人组6 天前
WSS排错检查
网络协议·https·ssl
徐子元竟然被占了!!7 天前
SSL/TLS证书是
服务器·网络协议·ssl
吠品8 天前
告别异步等待!UniApp uni.getSystemInfoSync:即时获取设备信息的效率利器
https·ssl
查尔char9 天前
CentOS 7 编译安装 Python 3.10 并解决 SSL 问题
python·centos·ssl·pip·python3.11
吠品9 天前
提升效率:掌握Git Cherry-Pick,精准管理PR提交!
网络协议·https·ssl