Openssl数据安全传输平台017:客户端在Linux上的编译与调试记录

news2025/1/11 20:05:55

文章目录

  • 1 在windows上先预编译
  • 2 Centos上进入项目文件夹进行编译
    • 2.1 找不到protobuf的google文件夹
    • 2.2 找不到动态库ljson
    • 2.3 动态库软链接失效
    • 2.4 undefined reference to `Json::Value::asString[abi:cxx11]() const![在这里插入图片描述](https://img-blog.csdnimg.cn/5a8ee555ad184b9eb177b7e39948e9d3.png)

1 在windows上先预编译

除了找不到库和目录的问题,其他的都应该在windows上解决。这个时候客户端代码在widows上编译,除了protobuf找不到目录,其他的基本没有什么问题。
在这里插入图片描述

在这里插入图片描述
然后打开虚拟机,项目文件已经在/home/projects目录下了

在这里插入图片描述

2 Centos上进入项目文件夹进行编译

2.1 找不到protobuf的google文件夹

  • 编译指令如下
// 找不到protobuf

g++ *.cpp *.cc -ljson -lpthread -lprotobuf -lcrypto -locci -lclntsh -std=c++11

在这里插入图片描述

  • 解决办法
    protobuf部署的时候,这个文件夹我安装的时候,是放在了centos的下面这个路径,执行文件、库、google文件夹都没整理。
/usr/local/protobuf/include

然后我去调整了下protobuf的位置,最终protobuf的部署,参考下面的文章,然后这个问题得到了解决。

2.2 找不到动态库ljson

//第二次

g++ *.cpp *.cc -ljson -lpthread -lprotobuf -lcrypto -L/usr/local/protobuf/include -locci -lclntsh -std=c++11

在这里插入图片描述

  • 分析

通常在软件编译时出现的usr/bin/ld: cannot find -lxxx的错误,主要的原因是库文件并没有导入的ld检索目录中。

  1. 确认库文件是否存在,比如-l123, 在/usr/lib/usr/local/lib,或者其他自定义的lib下有无lib123.so, 如果只是存在lib123.so.1,那么可以通过ln -sv lib123.so.1 lib123.so,建立一个连接重建lib123.so.

  2. 检查/etc/ld.so.conf中的库文件路径是否正确,如果库文件不是使用系统路径,/usr/lib, /usr/local/lib,那么必须在文件中加入。

  3. ldconfig重建ld.so.cache文件,ld的库文件检索目录存放文件。尤其刚刚编译安装的软件,必须运行ldconfig,才能将新安装的

  • 重新编译还是不对,因为我把库改成了依赖库的路径-L/usr/include/json,其实就是这里少加了个-ljson
  • 出错原因:增加了依赖库的路径,同时要指定连接的库

在这里插入图片描述

// 增加了依赖库路径和库

g++ *.cpp *.cc -L/usr/include/json -ljson -lpthread -lcrypto -L/usr/local/protobuf/include -lprotobuf -locci -lclntsh -std=c++11

2.3 动态库软链接失效

但是在处理这个问题的时候还出现了个小错误,创建动态库的链接文件失效了,我到Centos里面直接找到了这个链接查看properties的时候,发现显示broken

于是我用root用户删除libjson.so,然后又重新链接了一次:ln -s /lib/libjson_linux-gcc-11_libmt.so /lib/libjson.so,然后再次使用上述命令,bug就少了几个。
在这里插入图片描述

g++ *.cpp *.cc -lpthread -L/usr/include/json -ljson -L/usr/local/protobuf/lib -lprotobuf -lcrypto -locci -lclntsh -std=c++11

2.4 undefined reference to `Json::Value::asStringabi:cxx11 const在这里插入图片描述

一般出现cxx11 const’ 应该都是gcc的版本不一样。 我遇到的情况是jsoncpp生成的动态库和依赖它而生成的动态库的gcc版本不同。

  1. GCC5.1发布时,为libstdc++添加了新的特性,旧版就无法兼容了。为了避免混乱,对于旧版而言,有旧版(c++03规范)的libstdc++.so。也就是说有两个库,旧版(c++03规范)的libstdc++.so和新版(c++11规范)的libstdc++.so同时存在。

  2. 为了避免两个库到底选择哪一个的麻烦,GCC5.1就引入了-D_GLIBCXX_USE_CXX11_ABI来控制编译器到底链接哪一个libstdc++.so

-D_GLIBCXX_USE_CXX11_ABI=0 链接旧版库
-D_GLIBCXX_USE_CXX11_ABI=1 链接新版库

问题出在客户端ClientOP上,在头文件上添加#define _GLIBCXX_USE_CXX11_ABI 0

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1146976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快递单号批量查询教程,掌握包裹动态,让你成为物流达人!

亲爱的读者们,你是否曾经为了追踪快递包裹而烦恼?是否曾经为了查询多个快递单号而感到繁琐?现在,我们为你带来一个高效便捷的解决方案——快递单号批量查询教程!让你轻松掌握包裹动态,成为物流达人&#xf…

【深入浅出】寄存器精讲第一期

🌈个人主页:聆风吟 🔥系列专栏:数据结构、算法模板、汇编语言 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️开篇1.1 🔔CPU 概述(简单了解&#xff09…

两数和的目标 python (初学者vs程序员)

题目描述 1)给定一个整数列表,在列表中,从前向后查找两个元素使其相加之和等于目标数,并返回两个整数在列表中的下标。如果没有符合条件的数字,输出False,本题假设题目的解唯一。‬‪‬‪‬‪‬‪‬‮‬‪…

07. 蜂鸣器

07. 蜂鸣器 硬件原理分析代码编写 硬件原理分析 此处为PNP型三极管,BEEP为低的时候三极管才会导通,也就是BEEP0时,蜂鸣器会叫。BEEP是通过SNVS_TAMPER1这个IO控制的 代码编写 将前面的bsp、imx6ul、obj和project拷贝过来 初始化SNVS_TAMPE…

首次cmake 多目录构建失败

新建test3目录,新建如下图空目录;前文有4个源码文件,2个h,2个cpp;把前文的cpp文件拷贝到src目录下,把h文件拷贝到include目录下;前文的CMakeLists.txt拷贝到test3目录下; 在src目录新…

基于小安派AiPi-Eye-S1的Nes游戏机

1.作品展示 作品功能可见以下B站视频 外壳可以使用灰太狼大佬提供的外壳STL文件。在嘉立创三维猴上打印(外壳12元快递6元)。 外壳从以下的帖子中获取: 模型分享 2.作品说明 2.1 硬件部分 硬件上使用到了AiPi-Eye-S1开发板以及3.5寸 240*3…

社恐了怎么办?如何改变社交恐惧症?

社恐这个词已经算是普及了,自嘲自己是社恐的人真的挺多的,好像一句我社恐了就能解析很多问题,其实真正的社恐远比我们想象的要痛苦多了,社恐能被更多人认识到本来是件好事,但是过于的用社恐来给自己贴标签,…

VBA技术资料MF75:测量所选单元格范围的高度和宽度

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

从InnoDB索引的数据结构,去理解索引

从InnoDB索引的数据结构,去理解索引 1、InnoDB 中的 BTree1.1、BTree 的组成1.2、BTree中的数据页 2、聚簇索引2.1、聚簇索引的特点2.2、聚簇索引的结构示例2.3、聚簇索引的优缺点 3、非聚簇索引3.1、非聚簇索引结构示例3.2、关于回表3.3、聚簇索引和非聚簇索引的区…

ALS算法在菜品智能推荐系统的应用

核心推荐模块的推荐算法是基于用户推荐模 型(user_model)协同过滤的矩阵分解过滤算法 ALS。其算法原理可叙述为: ALS收集大数据样本的用户评分喜好信息,训 练推荐模型,基于该模型进行协同过滤。 对于任意一个形如用户-…

记录几个常用的docker镜像

背景 Docker 部署有着非常多的优势,可以帮助提高开发、测试和部署的效率,降低成本,使应用更具可移植性和可扩展性,包括但不限于 标准化应用发布,跨平台和主机使用:Docker的镜像提供了标准化发布环境&…

基于引力搜索算法的无人机航迹规划-附代码

基于引力搜索算法的无人机航迹规划 文章目录 基于引力搜索算法的无人机航迹规划1.引力搜索搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用引力搜索算法来优化无人机航迹规划。 …

报错:Error: error:0308010C:digital envelope routines::unsupported

运行旧项目时,报错:Error: error:0308010C:digital envelope routines::unsupported 主要原因:node版本太高了 解决方法:package.json 包文件中,添加代码 set NODE_OPTIONS--openssl-legacy-provider && &am…

代码审计-锐捷EG易网关 download.php 后台任意文件读取漏洞

首先登录到后台中(可以组合 锐捷EG易网关 管理员账号密码泄露漏洞) 关键部分代码为 直接从Get请求中提取 file参数读取文件,可以使用 …/ 跳转目录 验证POC /download.php?aread_txt&file../../../../etc/passwd漏洞证明: 文笔生疏,…

C的自定义类型

目录 1. 结构体 1.1. 结构体类型的声明 1.1.1. 特殊声明 2. 结构的自引用 3. 结构体变量的定义和初始化 4. 结构体内存对齐 4.1. 结构体内存对齐 4.2. 修改默认对齐数 5. 结构体传参 6. 结构体实现位段(位段的填充&可移植性) 6.1. 什么是位…

集丰照明|博物馆照明设计安全保护四大注意事项

博物馆展品是博物馆一切行为的中心,策划、装修、布展、照明、开展、撤展所有过程都围绕珍贵的展品而设置。因此,在整个行为过程中如何安全保护独一无二的珍稀展品成为博物馆展览的首要课题, 博物馆照明设计 必须优先处理好安全保护展品和更…

问题 X: 阿牛的EOF牛肉串(分类讨论)

算法如下: eg.f(n,o)表示的是以N为长度,以O为结尾的合法字符串个数 代码实现:

拿捏面试官,高频接口自动化测试面试题总结(附答案)狂收offer...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面试题&#xff1…

基于水循环算法的无人机航迹规划-附代码

基于水循环算法的无人机航迹规划 文章目录 基于水循环算法的无人机航迹规划1.水循环搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用水循环算法来优化无人机航迹规划。 1.水循环…

Windows防火墙导致端口访问不通

计算机A的IIS中部署的服务,在另外的计算机B中始终无法访问,ping和telnet都不通。   最初认为是硬件的问题,但是检查了网络后并未发现问题,同时计算机B与其它联网计算机之间也是可以相互访问。   接着测试从计算机A中ping和tel…