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
相关文章:
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重…...
DHCPv6之GitHub项目Android侧验证
一、adb里面安装busybox 1、下载busybox 下载网址:Index of /downloads/binaries/1.21.1 (busybox.net),目前最新是1.21.1版本 根据项目选择busybox-armv7l ,右键另存为下载到本地目录,下载后去掉文件的后缀名,变成如…...
简单易懂的 Postman Runner 参数自增教程
目录 什么是 Postman Runner? Postman Runner 如何实现参数自增? 步骤一:设置全局参数 步骤二:将全局参数带入请求参数 步骤三:实现参数自增 资料获取方法 什么是 Postman Runner? Postman Runner 是…...
BeanFactory与Applicationcontext(1)
BeanFactory是接口,提供了IOC容器最基本的形式,给具体的IOC容器的实现提供了规范。BeanFactory是spring的“心脏”,核心容器,它也是Applicationcontext的父接口。 BeanFactory实质上并未提供过多的方法,spring容器的I…...
C++初阶之模板深化讲解
模板深化讲解 非类型模板模板的特化1.函数模板特化2.类模板特化 模板分离编译1.什么是分离编译2.模板的分离编译 模板总结 非类型模板 非类型模板(Non-Type Template)是 C 中的一种模板形式,它允许你在模板中传递除了类型以外的其他值&#x…...
Redis数据结构——整数集合
定义 整数集合是集合的实现方式之一,当一个集合只包含整数值元素时,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合的底层实现。 整数集合就是存放整数的一个数组,整数集合的结构体定义: typeof struc…...
背上大书包准备面试之CSS篇
目录 H5 新特性 css3新特性? 为什么要初始化css样式? 浏览器兼容性问题? css sprites(css精灵图)? css盒模型是什么样的? 页面中一个块元素的宽度包含了盒模型中的哪些部分?…...
linux系列基本介绍
虽然我们常说Linux操作系统,这种叫法是不正确的,严格意义上讲,Linux并不是操作系统,而是属于操作系统的一个内核,inux内核提供了操作系统的核心功能,如进程管理、内存管理、文件系统等。 Linux有很多不同的…...
vue.draggable浅尝
介绍 Vue.Draggable是一款基于Sortable.js实现的vue拖拽插件。支持移动设备、拖拽和选择文本、智能滚动,可以在不同列表间拖拽、不依赖jQuery为基础、vue 2过渡动画兼容、支持撤销操作,总之是一款非常优秀的vue拖拽组件。本篇将介绍如何搭建环境及简单的…...
Tree相关
1.树相关题目 1.1 二叉树的中序遍历(简单):递归 题目:使用中序遍历二叉树 思想:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历࿰…...
git日常操作-案例
文章目录 查看远程有那些分支 查看远程有那些分支 git ls-remote --heads origin...
cmake链接.lib库
当使用CMake编写CMakeLists.txt文件来链接其他文件夹的.lib库文件时,你需要做以下几个步骤: 设置库文件路径: 使用 link_directories() 函数设置要搜索库文件的路径。例如: link_directories(${CMAKE_SOURCE_DIR}/path/to/libra…...
SkyWalking 部署(包含ES)
SkyWalking安装 结构 首先SkyWalking主要需要oapService、webApp、Elasticsearch(可选存储)三个,接下来讲一下这三个的安装步骤,安装过程中出现了一些细小的配置错误,导致用了快两天才弄好,麻木了&#x…...
Android学习之路(2) 设置视图
一、设置视图宽高 在Android开发中,可以使用LayoutParams类来设置视图(View)的宽度和高度。LayoutParams是一个用于布局的参数类,用于指定视图在父容器中的位置和大小。 下面是设置视图宽度和高度的示例代码: …...
SIP/VoIP之常见的视频问题
除了语音通话外,视频通话也是SIP协议通话中重要的功能,在实际应用中,经常会遇到一些视频问题,如下(以h264为例) 一、 己方未显示对方视频图像 排查方法: 查看网络抓包中有没有发给已方的视频…...
docker的服务/容器缺少vim问题
背景/问题: docker的服务/容器缺少vim问题 bash: vim: command not found 在docker的mysql服务中安装Vim 1、执行apt-get update root6d8d17e320a0:/# apt-get update问题:文件下载失败 Err:1 http://security.debian.org/debian-security buster/updates InRe…...
HCIP-OpenStack
1、OpenStack概述 OpenStack是一种云操作系统,OpenStack是虚拟机、裸金属和容器的云基础架构。可控制整个数据中心的大型计算、存储和网络资源池,所有资源都通过API或Web界面进行管理。 为什么称OpenStack是云操作系统? 云一般指云计算&…...
前端:Vue.js学习
前端:Vue.js学习 1. 第一个Vue程序2. Vue指令2.1 v-if、v-else-if、v-else2.2 v-for2.3 事件绑定 v-on:2.4 v-model 数据双向绑定2.5 v-bind 绑定属性 3. Vue组件4. Vue axios异步通信5. 计算属性6. 插槽 slots7. 自定义事件内容分发 1. 第一个Vue程序 首先把vue.js拷贝到本地…...
MySQL到Oracle快速上手
第一次做Oracle项目的时候对一些语法区别不太清楚,这里列出一些开发中发现的与MYSQL不同的点 一个用户相当于一个数据库 表空间 表空间是用于存储表、索引和其他数据库对象的逻辑存储结构。每个表空间由一个或多个数据文件组成,这些文件可以位于不同的物…...
机器人CPP编程基础-01第一个程序Hello World
很多课程先讲C/C或者一些其他编程课,称之为基础课程。然后到本科高年级进行机器人专业课学习,这样时间损失非常大,效率非常低。 C/单片机/嵌入式/ROS等这些编程基础可以合并到一门课中进行实现,这些素材已经迭代三轮以上…...
打印机租赁行业迷局:繁荣表象下的“三座大山”
2025年,中国打印机租赁市场规模已突破187.6亿元,产业链上下游企业多达10万余家。表面看,这是一片欣欣向荣的蓝海。然而,繁荣之下,行业正被“三座大山”压得喘不过气。行业现状:数据繁荣,内卷加剧…...
【JavaScript高级编程】拆解函数流水线 上犯
一、什么是setuptools? setuptools 是一个用于创建、分发和安装 Python 包的核心库。 它可以帮助你: 定义 Python 包的元数据(如名称、版本、作者等)。 声明包的依赖项,确保你的包能够正确运行。 构建源代码分发包&…...
智能售后工单分类:EcomGPT-7B+NLP多标签分类
智能售后工单分类:EcomGPT-7BNLP多标签分类 电商售后每天涌入数千张工单,人工分类处理需要4小时,现在只需30分钟 每天早晨,电商客服团队都要面对堆积如山的售后工单。商品质量问题、物流投诉、退款申请、技术咨询……各种问题混杂…...
Redis闭源后如何选择?亚马逊云科技Valkey开源替代方案全解析
1. Redis闭源背景下的技术选择困境 去年Redis官方宣布核心代码转向限制性许可协议后,整个开发者社区都面临着关键抉择。作为曾经最受欢迎的开源内存数据库,Redis的突然转向让许多依赖其开源特性的企业措手不及。我亲眼见过不少团队在技术选型会上激烈争…...
Phi-3-mini-4k-instruct-gguf精彩案例:用户调研报告→核心发现→行动建议三级生成
Phi-3-mini-4k-instruct-gguf精彩案例:用户调研报告→核心发现→行动建议三级生成 1. 模型简介与应用场景 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型,特别适合处理结构化文本生成任务。这个经过优化的GGUF版本在保持高质量输出的同时…...
Qwen3-ForcedAligner-0.6B与Python爬虫结合:自动采集语音数据并对齐
Qwen3-ForcedAligner-0.6B与Python爬虫结合:自动采集语音数据并对齐 1. 引言 语音数据处理一直是人工智能领域的热门话题,但很多开发者在实际项目中都会遇到这样的问题:如何快速获取大量的语音数据?如何让文本和语音精确对齐&am…...
2026年OpenClaw(Clawdbot)华为云1分钟本地超简单安装及使用方法【超全】
2026 OpenClaw怎么部署?还在为部署OpenClaw到处找教程踩坑吗?别再瞎折腾了!OpenClaw一键部署攻略来了,无需代码、只需两步,新手小白也能轻松拥有专属AI助理! 一、先搞懂:OpenClaw是什么&…...
实测Sonic数字人:上传自拍和录音,生成专属虚拟形象视频(效果超赞)
实测Sonic数字人:上传自拍和录音,生成专属虚拟形象视频(效果超赞) 1. 引言:数字人视频制作新体验 1.1 传统视频制作的痛点 制作专业级人物视频通常需要昂贵的设备、复杂的3D建模和专业的后期制作。对于普通用户来说…...
Phi-4-mini-reasoning企业级部署:Nginx反向代理+HTTPS安全访问配置教程
Phi-4-mini-reasoning企业级部署:Nginx反向代理HTTPS安全访问配置教程 1. 项目介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这款模型主打"小参数、强推理、长上下文、低延迟…...
前端设计融合:忍者像素绘卷:天界画坊生成UI/UX素材实战
前端设计融合:忍者像素绘卷:天界画坊生成UI/UX素材实战 1. 像素艺术在前端设计中的独特价值 像素艺术作为一种复古又现代的设计风格,近年来在前端设计领域重新焕发生机。不同于传统设计工具需要手动绘制每个像素点,忍者像素绘卷…...
