当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/123451.html

相关文章:

  • DHCPv6之GitHub项目Android侧验证
  • 简单易懂的 Postman Runner 参数自增教程
  • BeanFactory与Applicationcontext(1)
  • C++初阶之模板深化讲解
  • Redis数据结构——整数集合
  • 背上大书包准备面试之CSS篇
  • linux系列基本介绍
  • vue.draggable浅尝
  • Tree相关
  • git日常操作-案例
  • cmake链接.lib库
  • SkyWalking 部署(包含ES)
  • Android学习之路(2) 设置视图
  • SIP/VoIP之常见的视频问题
  • docker的服务/容器缺少vim问题
  • HCIP-OpenStack
  • 前端:Vue.js学习
  • MySQL到Oracle快速上手
  • 机器人CPP编程基础-01第一个程序Hello World
  • 前后端分离------后端创建笔记(03)前后端对接(下)
  • Leet code1049 最后一块石头的重量II
  • Rust语法:变量,函数,控制流,struct
  • LVS简介及LVS-DR搭建
  • Java基础篇--日期时间类
  • Vue生命周期函数 详解
  • 判断链表有环的证明
  • 百度屏蔽词有哪些?其中就有移民关键词指数被屏蔽?
  • 代码随想录day02
  • VR时代真的到来了?
  • docker run 命令转化为 docker-compose 工具