云端Docker搭建ABY库以及本地CLion使用

news2025/1/13 3:36:31

文章目录

  • 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 build
    
    cmake .. -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库
  • 搭了两天后的记录,可能不太全面,只提供了大致的思路,细节方面需要自己去琢磨与尝试
  • 遇到其他问题也欢迎与我交流,看到就会回,不过每个人的需求不同,根据自己的需求搭环境

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

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

相关文章

C++ Primer Plus 第6版 读书笔记(6) 第 6 章 分支语句和逻辑运算符

第 6 章 分支语句和逻辑运算符 C是在 C 语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言&#xff0c;是C语言的超集。本书是根据2003年的ISO/ANSI C标准编写的&#xff0c;通过大量短小精悍的程序详细而全面地阐述了 C的基本概念和技术&#xff0c;…

从 Clickhouse 到 Apache Doris,慧策电商 SaaS 高并发数据服务的改造实践

作者介绍&#xff1a; 马成&#xff0c;慧策 JAVA高级研发工程师慧策&#xff08;原旺店通&#xff09;是一家技术驱动型智能零售服务商&#xff0c;基于云计算 PaaS、SaaS 模式&#xff0c;以一体化智能零售解决方案&#xff0c;帮助零售企业数字化智能化升级&#xff0c;实现…

C++面向对象编程之六:重载操作符(<<,>>,+,+=,==,!=,=)

重载操作符C允许我们重新定义操作符&#xff08;例如&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/&#xff09;等&#xff0c;使其对于我们自定义的类类型对象&#xff0c;也能像内置数据类型&#xff08;例如&#xff1a;int&#xff0c;float&#xff0c;double&…

Java 最小路径和

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

求“二维随机变量的期望E(X)与方差D(X)”例题(一)

离散型 设随机变量(X,Y)的联合分布律为 X\Y0100.10.210.30.4 (1)求E(X) 先求x的边缘分布律&#xff0c;表格里x0的概率为0.10.2&#xff0c;于是我们可得 X01P0.30.7直接求E(X)即可&#xff0c;得到结果 (2)求E(XY) 直接x与y相乘就行。 记得别乘多了&#xff0c;别的算了又…

代码随想录算法训练营day55 | 动态规划 583. 两个字符串的删除操作 72. 编辑距离

day55583. 两个字符串的删除操作1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组72. 编辑距离1. 确定dp数组&#xff08;dp table&#xff09;以及下标的含义2. 确定递推公式3. dp数组如何初始化4…

idea热部署

Dea 热部署方式汇总&#xff1a;一、开启自动编译修改file->settings->compiler->build project automatically二、开启允许在运行中修改文件按ctrlshifta&#xff0c;搜索Registry双击进去&#xff0c;点击面板搜索running&#xff0c;勾选下面的值&#xff1a;Eclip…

MySQL索引结构分类及其优劣选择详解

什么是索引&#xff1f; 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构&#xff08;有序&#xff09;。在数据库系统中&#xff0c;除了存储数据之外&#xff0c;还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff0…

Nacos集群设置开机自启动

一、搭建前提需要的环境 -rw-rw-rw-. 1 root root 8491533 Mar 5 20:05 apache-maven-3.3.9-bin.tar.gz -rw-rw-rw-. 1 root root 189815615 Mar 23 2018 jdk-8u162-linux-x64.tar.gz -rw-r--r--. 1 root root 25548 Apr 7 2017 mysql57-community-release-el7-10.n…

HTML、CSS学习笔记7(移动适配:rem、less)

一、移动适配 rem&#xff1a;目前多数企业在用的解决方案vw / vh&#xff1a;未来的解决方案 1.rem&#xff08;单位&#xff09; 1.1使用rem单位设置尺寸 px单位或百分比布局可以实现吗&#xff1f; ————不可以 网页的根字号——HTML标签 1.2.rem移动适配 写法&#x…

双碳目标下基于“遥感+”融合技术在碳储量、碳收支、碳循环等多领域监测与模拟

目录 专题一、双碳视角下遥感技术的研究方向 专题二、生态系统碳库的遥感估算—以森林碳储量为例 专题三、生态系统碳收支的遥感模拟—以京津冀地区为例 专题四、区域能源消耗碳排放空间格局模拟—基于夜间灯光数据 专题五、土地利用变化碳排放效应的遥感监测—以城市扩张…

PLSQL Developer 安装指南

PLSQL Developer 是 Oracle 的客户端。 下面以64位破解版的PLSQL Developer为例&#xff0c;进行PLSQL Developer 安装讲解。 0. 下载 PLSQL Developer https://download.csdn.net/download/Shipley_Leo/87557938 1. 根据操作系统选择对应“plsqldev.exe”可执行文件&#xff…

虚拟平台中的“有意”/“无意”故障注入

构建虚拟平台的重点往往会放在系统运行&#xff0c;尤其是在汽车和航空航天的数字孪生领域。只有确保虚拟平台能够正常运行系统&#xff0c;软件才得以可靠地在虚拟平台上运行。 为确保系统正常运行&#xff0c;通常需要解决如何测试异常、故障和其他问题。该过程通常被称为“…

【Linux】vi和vim编辑器

目录主题主题 三种常见模式&#xff1a; 正常模式 以vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中&#xff0c;你可以使用[上下左右]按键来移动光标&#xff0c;你可以使用『删除字符』或『删除整行』来处理档案内容&#xff0c;也可以使用「复制、…

监控开源方案

监控开源方案可观测性指标监控日志监控链路追踪开源产品ZabbixOpen-FalconPrometheusNightingale监控需求 : 系统出现问题 , 能及时感知了解数据趋势&#xff0c;预测未来可能出问题了解系统的水位&#xff0c;为服务扩缩容提供数据支撑感知待优化点&#xff0c;如 : 中间件参…

【Unity VR开发】结合VRTK4.0:创建一个按钮(Togglr Button)

语录&#xff1a; 有人感激过你的善良吗&#xff0c;貌似他们只会得寸进尺。 前言&#xff1a; Toggle按钮是提供简单空间 UI 选项的另一种方式&#xff0c;在该选项中&#xff0c;按钮将保持其状态&#xff0c;直到再次单击它。这允许按钮处于激活状态或停用状态的情况&#…

固态存储设备固件升级方案

1. 前言 随着数字化时代的发展&#xff0c;数字数据的量越来越大&#xff0c;相应的数据存储的需求也越来越大&#xff0c;存储设备产业也是蓬勃发展。存储设备产业中&#xff0c;发展最为迅猛的则是固态存储(Solid State Storage&#xff0c;SSS)。数字化时代&#xff0c;海量…

【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(新的开篇)”】

目录【ESP32freeRTOS学习笔记】系列新的开篇ESP-IDF对FreeRTOS的适配ESP-IDF环境中使用FreeRTOS的差异性简介关于FreeRTOS的配置关于ESP-IDF FreeRTOS Applications结语【ESP32freeRTOS学习笔记】系列新的开篇 ESP-IDF对FreeRTOS的适配 FreeRTOS是一个可以适用于多个不同MCU开…

JavaWeb开发(三)3.6——代理模式

一、代理模式概述 1.1、代理模式的理解 参考人家的举例&#xff0c;感觉挺形象&#xff0c;容易理解&#xff1a; 就拿明星与经纪人的关系来说&#xff0c;明星就好比被代理类&#xff0c;明星只需要负责唱歌&#xff0c;表演或给粉丝签名等事务&#xff0c;而类似签合同&…

Jenkins从配置到实践

Jenkins从配置到实践 1 持续集成 Continuous integration&#xff08;CI&#xff09; 1.1 什么是持续集成&#xff1f; 持续集成Continuous integration&#xff08;CI&#xff09;是一种软件开发实践&#xff0c;即团队开发成员经常集成他们的工作&#xff0c;通常每个成员…