云端Docker搭建ABY库以及本地CLion使用
文章目录
- ABY的搭建以及使用
- 前言
- ABY库的下载、安装及测试
- CLion配置
- 后续
- 杂项
- 项目改名
- 使用其他的库
- 最后
ABY的搭建以及使用
前言
- 仅做记录,仅供参考,不同人有不同的使用方式
- 命令手敲,可能有错,自己辨识
- 勿问,我懂的也不多,瞎搞的
ABY库的下载、安装及测试
- Github 官网
- APT安装跳过
- 推荐递归下载,下载后备份这个库,以防后面搞烂
git clone --recursive https://github.com/encryptogroup/ABY.git cp -r ABY ABY_bak
- 编译及安装(推荐安装到非标准位置)
cd ABY mkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX="" make mkdir /usr/local/ABY make DESTDIR=/usr/local/ABY install
- 源码编译运行后有点问题需要修改,cmake_constants.h is not found #197,参考:配置OPPRF-PSI密码学协议
- 安装后在
/usr/local/ABY
里有库文件啥的,但是make install安装后,再编译运行自己的程序或者样例程序就总报各种错,什么找不到relic啦之类的。所以我把/usr/local/ABY
备份后删掉了,其实只是要里面的include
目录而已。zip -r ABY_include.zip /usr/local/ABY/include # 因为后面要在Windows下使用,用zip打包方便一点(而且我也不熟tar命令...) sz ABY_include.zip # 可能需要安装lrzsz: apt install lrzsz(用xftp当我没说)# 改名或备份 mv /usr/local/ABY /usr/local/ABY_bak rm -rf /usr/local/ABY (要备份就备份吧,我备份了后面好像没什么用,初配建议还是备个份,推荐改名)
- 回到
ABY/build
,清空build里的东西:rm -rf ./*
- 测试(测不测由你,建议测测,熟悉下流程)
- 返回
ABY
,修改CMakeList.txt: - 删掉最后的ABY_BUILDE_EXE,待会重新写一个
- 删掉开头这个option(可选,删不删无所谓,反正用不到)
- 在最后添加子目录,用于测试(测不测随你)
add_subdirectory(src/ABY_TEST)
- 你现在应该在
ABY
目录下,在src
内有测试样例,但是很多,选一个出来测试。mkdir src/ABY_TEST cp -r src/examples/millionaire_prob/ src/ABY_TEST # 把百万富翁的样例copy出来
- 由于路径比之前样例里的百万富翁的样例少了一层目录,所以里面的
cpp
和.h
文件里的include路径需要少掉一层../
,自己改就行,记得common
路径里也有代码,也需要改
- 直接在ABY目录下编译运行
cmake . make
- 顺利的话在bin目录内就能看到可执行文件,能跑通就算成功
- 返回
- 现在整个ABY目录下就算搭建好的框架了,建议在这里面做工作
CLion配置
- CLion挂载到ABY目录,改下Mapping
- 在CLion下测试,可以把百万富翁那个样例拉出来测试,同样注意路径问题,CMakeList自行修改,给个参考:
- 跑通就算成功
- 提一嘴,百万富翁这个例子需要输入参数,并且需要两个终端运行,CLion可以在配置出修改
后续
- 到这里虽然程序跑通了,但是CLion没办法获取到ABY库的信息,代码处都是报红。之前试过,如果安装ABY库,也就是前面提到的安装到
/usr/local/ABY
,安装后CLion可以检索到ABY库,include不报错,代码不报红了,但是!跑不通了,程序运行的时候提示找不到那些package。 - 权衡利弊,我最终选用的解决方案是,ABY库安装后从云端拉到本地,然后云端的ABY库删掉,这样程序就能顺利运行了。然后把下载到本地的ABY库里的include里的文件拷贝到项目下,然后把
include <>
的部分换成include ""
,这样代码就不会报错,程序也能正常运行。
- 再提一嘴,把ABY的include里的文件拷贝到项目内后,可以设置这几个目录不同步到云端。还是在Deployment处,前面在Mapping设置过挂载的路径,在这里可以设置Excluded Paths
杂项
项目改名
- CMakeList里
project()
可以修改项目名,原本是ABY,如果要改名的话,注意,在cmake路径下有一个文件:ABYConfig.cmake.in
,如果只修改项目名的话,会报错找不到cmake.in文件,需要把ABYConfig.cmake.in
文件改名为你的项目名Config.cmake.in
使用其他的库
- 建议在ABY里面的CMakeList上改,加一些
find_package()
、add_executable()
和target_link_libraries()
应该是没什么问题的 - 如果有其他的,建议一条一条加,加完cmake编译一下看看有没有问题,在保证使用其他库后也能用的情况下,能少加就少加,不然可能不兼容(血的教训),具体得自己去排雷
- 下面这句是没问题的:
- 下面这句就出问题了:
最后
- 最终效果就是,Clion上代码显示正常,无报错,调试和运行也能在云端正常运行
- 搭这玩意花了我两天,建议新手学下CMakeList,还得熟悉Clion与Docker的连接部署等操作,参考我的上一篇博客:Clion连接Docker,使用HElib库
- 搭了两天后的记录,可能不太全面,只提供了大致的思路,细节方面需要自己去琢磨与尝试
- 遇到其他问题也欢迎与我交流,看到就会回,不过每个人的需求不同,根据自己的需求搭环境
相关文章:

云端Docker搭建ABY库以及本地CLion使用
文章目录ABY的搭建以及使用前言ABY库的下载、安装及测试CLion配置后续杂项项目改名使用其他的库最后ABY的搭建以及使用 前言 仅做记录,仅供参考,不同人有不同的使用方式命令手敲,可能有错,自己辨识勿问,我懂的也不多…...
ES6-箭头函数、解构赋值、对象简写
箭头函数特点 1、 (只有1个形参) 可以省略() 2、 {} 可以省略 只有一句代码 或 只有返回值的时候,省略return 3、arguments 不可用,arguments在没有形参的时候可以拿到调用函数拿在的实参 获取伪数组通过Array.from转为真数组。 4、 箭头函数没有this, …...

【CSS】CSS 背景设置 ② ( 背景位置 | 背景位置-方位值设置 )
文章目录一、背景位置1、语法说明2、注意事项二、背景位置-方位值设置1、效果展示2、完整代码示例一、背景位置 1、语法说明 如果 盒子的大小 大于 背景图片的大小 , 默认的 图片 位置是 左上角 ; 设置背景位置的 CSS 语法如下 : background-position : length length backgro…...

HTML 扫盲
✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录前言HTML 结构快速生成代码框架HTML 常见标签注释标签标题标签: h1-h6段落标签:p换行标签:br格式化标签…...

项目中用到的责任链模式
目录 1.什么是责任链?它的原理是什么? 2.应用场景 3.项目中的应用 传送门:策略模式,工作中你用上了吗? 1.什么是责任链?它的原理是什么? 将请求的发送和接收解耦,让多个接收对象…...

C++复习笔记--STL的string容器和vector容器
1--string容器string 本质上是一个类,其不同于指针 char*,string 类的内部封装了 char*,用于管理字符串,是一个 char* 型的容器;1-1--string构造函数string 的构造函数原型:string(); // 创建一个空的字符串…...

第一章 软件项目管理概述
项目(Project)是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。项目的特征PMBOK(A guide to the Project management Body Of Knowledge:项目管理知识体系指南)五大过程组和十大知识领域从时间角度出发,项目管理分为五大过程组:启动…...

【Linux系统编程】06:共享内存
共享内存 OVERVIEW共享内存一、文件上锁flock二、共享内存1.关联共享内存ftok2.获取共享内存shmget3.绑定共享内存shmat4.绑定分离shmdt5.控制共享内存shmctl三、亲缘进程间通信1.共享内存写入与读取2.共享内存解绑与删除3.共享内存综合四、非亲缘进程间通信1.通过sleep同步2.通…...

【专项】112. 路径总和
112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 …...

【数据结构】堆排序
堆是一种叫做完全二叉树的数据结构,可以分为大根堆,小根堆,而堆排序就是基于这种结构而产生的一种程序算法。大堆:每个节点的值都大于或者等于他的左右孩子节点的值小堆:每个结点的值都小于或等于其左孩子和右孩子结点…...

论文阅读笔记《GAMnet: Robust Feature Matching via Graph Adversarial-Matching Network》
核心思想 本文提出一种基于图对抗神经网络的图匹配算法(GAMnet),使用图神经网络作为生成器分别生成源图和目标图的节点的特征,并用一个多层感知机作为辨别器来区分两个特征是否来自同一个图,通过对抗训练的办法提高生成器特征提取…...

数据安全—数据完整性校验
1、数据安全保障三要素即 保密性 完整性、可用性机密性:要求数据不被他人轻易获取,需要进行数据加密。完整性:要求数据不被他人随意修改,需要进行签名技术可用性:要求服务不被他人恶意攻击,需要进行数据校验…...

Java 最小路径和
最小路径和中等给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid [[1,3,1],[1,5,1],[4,2,1]]输出&…...

Flask+VUE前后端分离的登入注册系统实现
首先Pycharm创建一个Flask项目: Flask连接数据库需要下载的包: pip install -U flask-cors pip install flask-sqlalchemy Flask 连接和操作Mysql数据库 - 王滚滚啊 - 博客园 (cnblogs.com) sqlAlchemy基本使用 - 简书 (jianshu.com) FlaskVue前后端分…...

【Go】用Go在命令行输出好看的表格
用Go在命令行输出好看的表格前言正文生成Table表头设置插入行表格标题自动标号单元格合并列合并行合并样式设置居中设置数字自动高亮标红完整Demo代码结语前言 最近在写一些运维小工具,比如批量进行ping包的工具,实现不困难,反正就是ping&am…...
怎么处理消息重发的问题?
消息队列在消息传递的过程中,如果出现传递失败的情况,发送方会重试,在重试的过程中,可能会产生重复的消息。 消息重复的情况必然存在 关于传递消息时能够提供的服务质量标准,MQTT协议给出了三种不同的标准࿱…...

JVM 运行时数据区(数据区组成表述,程序计数器,java虚拟机栈,本地方法栈)
JVM 运行时数据区JVM 运行时数据区3.1运行时的数据区组成概述3.1.1程度计数器3.1.2java虚拟机栈3.1.3本地方法栈3.1.4java堆3.1.5方法区3.2程序计数器3.3java虚拟机栈3.4本地方法栈JVM 运行时数据区 堆,方法区(元空间) 主要用来存放数据 是线程共享的. 程序计数器,本地方法栈…...
Oracle ASM磁盘组配置、日常运维、故障处理等操作资料汇总
ASM(自动存储管理)在数据库中是非常重要的组成部分,它可以为磁盘提供统一的存储管理、提高磁盘访问的性能和可用性、简化管理复杂度,从而为数据库的运行提供更好的支持。这里就为大家整理了墨天轮数据社区上一些ASM相关基础知识、…...

java对象的创建与内存分配机制
文章目录对象的创建与内存分配机制对象的创建类加载检查分配内存初始化零值设置对象头指向init方法其他:指针压缩对象内存分配对象在栈上分配对象在Eden区中分配大对象直接分配到老年代长期存活的对象进入老年代对象动态年龄判断老年代空间分配担保机制对象的内存回…...

本地存储localStorage、sessionStorage
目录 一、localStorage 二、sessionStorage 三、本地存储处理复杂数据 一、localStorage 介绍 (1)数据存储在用户浏览器中 (2)设置、读取方便、甚至页面刷新不会丢失数据 (3)容量较大,se…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
从实验室到产业:IndexTTS 在六大核心场景的落地实践
一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...