云端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…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
