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

OpenSSL源码编译及Debug

**

1. 环境

Linux 5.19.0-14-generic 22.04.1-Ubuntu

2. 所需工具

gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) cmake version 3.22.1

3. 步骤
3.1 获取openssl源码
方法可以git clone获得源码,或者直接去GitHub上下载压缩包,GitHub网址:https://github.com/openssl/openssl
使用git clone方法:

lan@lan:~/openssl/code/openssl$ git clone git@github.com:openssl/openssl.git

3.2 源码的安装三步骤:配置,编译,和安装
安装分为动态库安装和静态库安装
静态库安装:
3.2.1 配置

lan@lan:~/openssl/code/openssl$ ./config --prefix=/usr/local --openssldir=/usr/local/ssl

–prefix指定安装路径; --openssldir配置参数路径,是在–prefix指定路径下的子目录。
注:–prefix后的路径可以指定自己新建的文件目录,比如–prefix=/usr/local/openssl,这样所有文件都会在/usr/local/openssl路径下,如果想删除时比较好操作。
执行完后:
在这里插入图片描述
3.2.2 编译和安装

lan@lan:~/openssl/code/openssl$ make && sudo make install

动态库安装:
基本步骤同上三步骤:配置,编译,安装

lan@lan:~/openssl/code/openssl$ ./config -d shared --prefix=/usr/local --openssldir=/usr/local/ssl
lan@lan:~/openssl/code/openssl$ make clean
lan@lan:~/openssl/code/openssl$ make && sudo make install

还需要加入动态链接库路径

lan@lan:~/openssl/code/openssl$ su - root
root@lan:~# echo "/usr/local/lib" >> /etc/ld.so.conf
root@lan:~# cat /etc/ld.so.conf
ld.so.conf内容:include /etc/ld.so.conf.d/*.conf/usr/local/libroot@lan:~# ldconfig -v

4. 检查版本

lan@lan:~/openssl/testdata$ openssl version

在这里插入图片描述

如果你安装了两个版本且出现not found情况:
在这里插入图片描述
执行:

lan@lan:/usr/local/lib64$ export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

这是将/usr/local/lib添加到环境变量中,确保能使用该路径下的库,再检查openssl版本:

lan@lan:/usr/local/lib64$ openssl version -a

在这里插入图片描述
这是临时修改环境,只针对当前会话有效,如果要永久修改,需要修改 ~/.bashrc 或者 ~/.bash_profile文件,保存、退出

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64

执行生效source .bashrc或者 source .bash_profile文件

5. Debug
使用gdb来debug openssl demo
5.1 选择demo下的cipher,也可以其他文件夹

cd /home/lan/openssl/code/openssl/demos/cipher

5.2 编译:
demo下面的每个文件夹下的测试源码,都可独立编译

lan@lan:~/openssl/code/openssl/demos/cipher$ make clean && make

在这里插入图片描述
5.3 运行

lan@lan:~/openssl/code/openssl/demos/cipher$ ./aesgcm

在这里插入图片描述
5.4 使用gdb debug

lan@lan:~/openssl/code/openssl/demos/cipher$ gdb aesgcm

在这里插入图片描述
就可以按需使用gdb 命令来debug了

相关文章:

OpenSSL源码编译及Debug

** 1. 环境 Linux 5.19.0-14-generic 22.04.1-Ubuntu 2. 所需工具 gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) cmake version 3.22.1 3. 步骤 3.1 获取openssl源码 方法可以git clone获得源码,或者直接去GitHub上下载压缩包,GitHub网址&#xf…...

go之goburrow/modbus 学习

goburrow/modbus 是一个用Go语言实现的Modbus协议库,提供了Modbus主机(Master)和从机(Slave)的实现,支持两种主要的Modbus传输模式:Modbus TCP和Modbus RTU。 功能介绍 1. 支持的传输模式 Mod…...

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么?

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么? 随着计算机视觉技术的快速发展,目标检测(Object Detection)已经在各种应用场景中得到了广泛的应用。然而,传统的目标检…...

【教程】Ubuntu给pycharm添加侧边栏快捷方式

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 以下教程不仅限于pycharm,其他软件也是一样操作 1、进入到pycharm的目录,先通过命令行打开pycharm: ./bin/pycharm…...

三个月外贸小白好迷茫,该何去何从?

最近看到一个共性的问题,也许对于大多数外贸新人来说,都有过这样的困扰和无力感,也许对于每一个没有强大背景的外贸小伙伴来说,可能都是这样一路成长起来的。 大家好,我是一名普通二本英专生,八月中旬入职…...

MySQL数据库——基本查询(Create)

CRUD:Create(创建)Retrieve(读取)Update(更新)Delete(删除) 1.Create ①单行数据全列插入 insert [into] table_name [(colume[,colume]……)] values (value_list) […...

spring-security-1-快速入门

1 功能 身份认证(authentication)授权(authorization)防御常见攻击 身份认证&#xff1a;常见账号密码登录&#xff0c;短信登录 授权&#xff1a;什么样的角色&#xff0c;能看见什么菜单&#xff0c;能访问哪些接口。 2 pom <dependency><groupId>org.springf…...

5 大场景上手通义灵码企业知识库 RAG

大家好&#xff0c;我是通义灵码&#xff0c;你的智能编程助手&#xff01;最近我又升级啦&#xff0c;智能问答功能全面升级至 Qwen2&#xff0c;新版本在各个方面的性能和准确性都得到了显著提升。此外&#xff0c;行间代码补全效果也全面优化&#xff0c;多种编程语言生成性…...

免费远程控制电脑的软件有哪些?

什么是远程控制&#xff1f; 远程控制是一种通过网络从一台设备操作另一台设备的技术。连接后&#xff0c;用户可以直接远程操作那台电脑进行各种操作。随着科技的不断进步和用户需求的增加&#xff0c;远程控制市场日益蓬勃。远程控制不仅应用于远程办公和远程教学&#xff0…...

Linux软件包yum

目录 Linux软件包管理器 yum关于rzsz注意事项查看软件包如何安装软件卸载命令 Linux开发工具Linux编辑器-vim使用1. vim的基本概念2. vim的基本操作3. vim正常模式命令集4. vim末行模式命令集5. vim操作总结 小彩蛋 Linux软件包管理器 yum 软件包 在Linux下安装软件&#xff…...

网页的切换与嵌套

网页的切换与嵌套 网页的切换 在浏览器窗口中如果点击超链接标签会在当前的浏览器窗口中显示新的数据&#xff0c;但有些超链接标签点击后却会在一个新的窗口显示数据&#xff0c;这种情况下就无法对新的开的窗口页面进行操作了。 基于这种情况&#xff0c;我们就需要使用dri…...

基于飞桨框架的稀疏计算使用指南

本文作者-是 Yu 欸&#xff0c;华科在读博士生&#xff0c;定期记录并分享所学知识&#xff0c;博客关注者5w。本文将详细介绍如何在 PaddlePaddle 中利用稀疏计算应用稀疏 ResNet&#xff0c;涵盖稀疏数据格式的础知识、如何创建和操作稀疏张量&#xff0c;以及如何开发和训练…...

启明云端WT32C3-S6物联网模块,乐鑫ESP32-C3芯片技术应用

随着物联网技术的飞速发展&#xff0c;智能设备在我们生活中的应用越来越广泛。从智能电网到远程医疗&#xff0c;从楼宇自动化到智能家居&#xff0c;这些技术正在改变我们的生活方式。 在这样的背景下&#xff0c;启明云端推出的WT32C3-S6 WiFi模块以其低功耗、高性价比的特…...

超越流水线,企业研发规范落地新思路

作者&#xff1a;子丑 内容大纲&#xff1a; 1、研发规范≠流程约束 2、自动化工具→研发规范载体 3、研发规范在工具上的落地示例 4、研发规范的选型方法与常见实践 研发规范≠流程约束 这个故事特别适合研发规范的场景&#xff0c;我们要避免成为把猫绑在柱子上的信众…...

财务会计与管理会计(四)

文章目录 月度数据统计分析OFFSET函数在图表分析中的应用 多种费用组合分析图SUMPRODUCT函数 省公司全年数据分析模板INDIRECT、OFFSET函数 多公司分季度数据筛选VLOOKUP、IFERROR函数的应用 淘宝后台数据分析OFFSET函数在跨表取数中的应用 燃气消耗台账数据统计分析图SUMPRODU…...

回归分析系列1-多元线性回归

03 多元线性回归 3.1 简介 多元线性回归是简单线性回归的扩展&#xff0c;允许我们同时研究多个自变量对因变量的影响。多元回归模型可以表示为&#xff1a; 其中&#xff0c;x1,x2,…,xp是 p 个自变量&#xff0c;β0 是截距&#xff0c;β1,β2,…,βp是对应的回归系数&…...

web小游戏开发:拼图——蜂巢拼图

web小游戏开发:拼图——蜂巢拼图 蜂巢拼图游戏规则调整选项切图计算六边形的宽和高铺上背景画出蜂巢制作图块游戏方法打乱排列拖拽图块开始拖拽拖拽移动放置图块小结蜂巢拼图 之前我们已经完成了长方形的拼图代码,包括了三个游戏方式,并讨论了带咬合齿的游戏代码该如何制作…...

springCloud集成activiti5.22.0流程引擎(分支)

springCloud集成activiti5.22.0流程引擎 点关注不迷路&#xff0c;欢迎再访&#xff01; 精简博客内容&#xff0c;尽量已行业术语来分享。 努力做到对每一位认可自己的读者负责。 帮助别人的同时更是丰富自己的良机。 文章目录 springCloud集成activiti5.22.0流程引擎一.Sprin…...

ppt模板免费网站有哪些?自动美化工具推荐

新的8月&#xff0c;是时候以全新面貌迎接高效办公挑战了&#xff01; 想要你的PPT演示脱颖而出&#xff0c;却苦于找不到精美又免费的模板&#xff1f; 别担心&#xff0c;今天我来告诉你们&#xff1a;哪个软件有精美免费ppt模板&#xff1f; 今天我为你们精心汇总了6款PPT…...

java实现解析pdf格式发票

为了减少用户工作量及误操作的可能性&#xff0c;需要实现用户上传PDF格式的发票&#xff0c;系统通过解析PDF文件获取发票内容&#xff0c;并直接将其写入表单。以下文章记录了功能实现的代码。 发票样式 发票内容解析 引用Maven 使用pdfbox <dependency><groupI…...

影刀RPA神用法:自动监控竞品价格的实操步骤

监控竞品价格的实操步骤数据采集模块配置 打开影刀RPA&#xff0c;创建一个新流程。使用网页抓取功能&#xff0c;定位竞品网站的价格元素。通过XPath或CSS选择器精准获取价格数据&#xff0c;确保动态加载内容也能被捕获。价格异常触发机制 设置价格波动阈值&#xff0c;当竞品…...

虚幻引擎C++实战:用TSharedPtr管理资源时90%人会犯的3个内存错误

虚幻引擎C实战&#xff1a;用TSharedPtr管理资源时90%人会犯的3个内存错误 在虚幻引擎的C开发中&#xff0c;智能指针系统是资源管理的核心工具之一。TSharedPtr作为UE提供的引用计数智能指针&#xff0c;其设计初衷是为了简化内存管理&#xff0c;但实际开发中却常常成为内存泄…...

Agisoft/PhotoScan手动对齐照片的实用技巧与常见问题解决

1. 手动对齐照片的核心原理与适用场景 当你用Agisoft/PhotoScan处理航拍或近景摄影测量数据时&#xff0c;可能会遇到部分照片无法自动对齐的情况。这种情况通常发生在拍摄场景缺乏明显纹理特征&#xff08;比如大片草地、水面&#xff09;或存在重复图案&#xff08;如整齐排列…...

避坑指南:TDengine开源版taosdump备份恢复,这些性能问题和‘缺口’你得知道

TDengine开源版备份恢复实战&#xff1a;taosdump性能瓶颈与数据缺口深度解析 1. 当开源版遇上生产环境&#xff1a;taosdump的真实表现 去年夏天&#xff0c;我们团队在新能源监控项目中首次尝试用TDengine开源版构建时序数据库集群。当系统运行三个月后&#xff0c;客户突然…...

告别无效Agent工程!掌握这3大核心,让你的AI助手效率飙升10倍!

最近 X 上有篇文章很火&#xff0c;叫《How To Be A World-Class Agentic Engineer》&#xff0c;作者是个深度的 Agent 工程实践者。 文章开头是这样描述的&#xff1a;你用着 Claude Code&#xff0c;每天琢磨自己是不是把它的能力榨干了。偶尔看到它干出极其弱智的事情&…...

构建智能游戏AI的理想训练场:腾讯王者荣耀AI开放环境全解析

构建智能游戏AI的理想训练场&#xff1a;腾讯王者荣耀AI开放环境全解析 【免费下载链接】hok_env Honor of Kings AI Open Environment of Tencent 项目地址: https://gitcode.com/gh_mirrors/ho/hok_env 强化学习研究如何突破理论到实践的鸿沟&#xff1f;如何在真实游…...

Java Spring Boot 中构造器循环依赖的处理

本文探讨了 Java Spring Boot 循环依赖问题是由于工程中结构设计不当造成的。通过分析示例代码&#xff0c;解释了循环依赖的原因&#xff0c;并提供了有效的解决方案来避免这些问题&#xff0c;重点是避免在结构中创建依赖对象的新例子&#xff0c;以防止无限递归调用 StackOv…...

量化版SenseVoice语音识别体验:模型缩小74%,速度提升33%实测

量化版SenseVoice语音识别体验&#xff1a;模型缩小74%&#xff0c;速度提升33%实测 1. 引言 语音识别技术正在快速渗透到我们的日常生活和工作中&#xff0c;从智能客服到会议记录&#xff0c;从实时字幕到语音搜索&#xff0c;这项技术正在改变我们与设备交互的方式。然而&…...

OpenClaw故障排查大全:GLM-4.7-Flash接口连接失败的7种解决方法

OpenClaw故障排查大全&#xff1a;GLM-4.7-Flash接口连接失败的7种解决方法 1. 问题背景与现象描述 上周在尝试将本地部署的GLM-4.7-Flash模型接入OpenClaw时&#xff0c;我遇到了令人抓狂的接口连接问题。明明模型服务已经正常启动&#xff0c;OpenClaw配置看起来也没问题&a…...

GPU vs TPU vs FPGA:三大AI芯片实战对比,哪个更适合你的项目?

GPU vs TPU vs FPGA&#xff1a;三大AI芯片实战对比&#xff0c;哪个更适合你的项目&#xff1f; 当你在深夜调试模型时&#xff0c;是否曾被"OOM"错误折磨得抓狂&#xff1f;或是看着电费账单上那个惊人的数字陷入沉思&#xff1f;选择正确的AI加速芯片&#xff0c;…...