ABY

本实验使用Ubuntu结合项目说明进行从零开始搭建ABY平台

github.com/encryptogro…

准备

  • 安装git

  • 安装g++

  • 安装cmake

  • 安装libgmp-dev

  • 安装libssl-dev

  • 安装libboost-all-dev

使用以下命令分别安装即可

sudo apt-get install <package-name> 

如果安装速度过慢可以更改镜像

介绍

g++

ABY项目是一个C++项目因此我们需要安装g++编辑器

首先我们需要添加其依赖

gcc 和 g++

实际上,只要是 GCC 支持编译的程序代码,都可以使用 gcc 命令完成编译。可以这样理解,gcc 是 GCC 编译器的通用编译指令,因为根据程序文件的后缀名,gcc 指令可以自行判断出当前程序所用编程语言的类别,比如:

xxx.c:默认以编译 C 语言程序的方式编译此文件;

xxx.cpp:默认以编译 C++ 程序的方式编译此文件。

xxx.m:默认以编译 Objective-C 程序的方式编译此文件;

xxx.go:默认以编译 Go 语言程序的方式编译此文件;

当然,gcc 指令也为用户提供了“手动指定代表编译方式”的接口,即使用 -x 选项。例如,gcc -xc xxx 表示以编译 C 语言代码的方式编译 xxx 文件;而 gcc -xc++ xxx 则表示以编译 C++ 代码的方式编译 xxx 文件。有关 -x 选项的用法,后续会给出具体样例

但如果使用 g++ 指令,则无论目标文件的后缀名是什么,该指令都一律按照编译 C++ 代码的方式编译该文件。也就是说,对于 .c 文件来说,gcc 指令以 C 语言代码对待,而 g++ 指令会以 C++ 代码对待。但对于 .cpp 文件来说,gcc 和 g++ 都会以 C++ 代码的方式编译。

cmake

CMake是一个跨平台的编译(Build)工具,可以用简单的语句来描述所有平台的编译过程。

CMake能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake

假如我们有一个深度学习框架的部分工程列表,里面有超过40个互相调用的工程共同组成,一些用于生成库文件,一些用于实现逻辑功能。他们之间的调用关系复杂而严格,如果我想在这样复杂的框架下进行二次开发,显然只拥有它的源码是远远不够的,还需要清楚的明白这几十个项目之间的复杂关系,在没有原作者的帮助下进行这项工作几乎是不可能的。

即使是原作者给出了相关的结构文档,对新手来说建立工程的过程依旧是漫长而艰辛的,因此CMake的作用就凸显出来了。原作者只需要生成一份CMakeLists.txt文档,框架的使用者们只需要在下载源码的同时下载作者提供的CMakeLists.txt,就可以利用CMake,在”原作者的帮助下“进行工程的搭建。

makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

gcc make cmake

  • 当你的程序只有一个源文件时,直接就可以用gcc命令编译它

  • 但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大,所以出现了make工具 make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接,makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令

  • makefile在一些简单的工程完全可以人工手下,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。这时候就出现了Cmake这个工具,cmake就可以更加简单的生成makefile文件给上面那个make用。当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile

  • CMakeLists.txt文件是你自己手写的。当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按下三角形即可

cmake是make maker,生成各种可以直接控制编译过程的控制器的配置文件,比如makefile、各种IDE的配置文件 make是一个简单的通过文件时间戳控制自动过程、处理依赖关系的软件,这个自动过程可以是编译一个项目

安装cmake与g++

sudo apt install cmake
sudo apt-get install g++ 

查询版本

cmake --version
g++ --version 

项目框架构建

我们需要克隆ABY代码仓库

git clone https://github.com/encryptogroup/ABY.git 

创建build文件夹进行构建

cd ABY/
mkdir build && cd build
cmake .. 

这一步当中会遇到一些问题,可以参照下一章节的总结,这里我们假设完成了Debug并继续

make 

成功运行!

cmake .. -DABY_BUILD_EXE=On//执行之后产生bin文件 

构建问题汇总

一般会出现一些错误,我们可以根据cmake ..之后的报错进行Debug,或者查看日志进行改错

这里将一些常见问题汇总如下:

1.版本问题

对报错的版本进行更改,对g++而言,目前的sudo apt-get install g++版本已经满足要求不会出现报错,但如果出现类似问题,具体参见该文章

2.包缺失

这里没有安装git,导致检测过程中报错。通过查看文件,我们可以发现,类似的其他包未安装也会提示报错

3.拓展丢失

出错原因:缺少两个依赖,这里我们选择主动下载依赖加入到extern中即可

注意这里的 OTExtension 和 ENCRYPTO_utils,其中第二个依赖还要再次使用该方法添加依赖的依赖Relic

具体过程就是通过clone或者下载将OTExtension与ENCRYPTO_utils放入ABY/extern中,将Relic放入ENCRYPTO_utils/extern中

注意:要将拓展改名。比如:OTExtension-main要改成OTExtension,这样才可以识别

注意

出现以下语句是正常现象并不是出错

<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/243ac980ac7c4ca5971642f6bdb5ac5e~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?) 具体可以参考文章:[What does "Performing Test CMAKE_HAVE_LIBC_PTHREAD" failed actually mean?](https://link.juejin.cn/?target=https%3A%2F%2Flocalcoder.org%2Fwhat-does-performing-test-cmake-have-libc-pthread-failed-actually-mean "https://localcoder.org/what-does-performing-test-cmake-have-libc-pthread-failed-actually-mean"" style="margin: auto" />

运行案例

进入到ABY/build/目录下进行操作 make

make 

在ABY/build/bin/目录下打开两个终端,分别输入如下代码,就可以运行实例得到结果

./millionaire_prob_test -r 0 
./millionaire_prob_test -r 1 

安全多方ABY框架搭建与常见问题汇总相关推荐

  1. xampp php搭建失败,ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败),thinkphpxampp...

    ThinkPHP框架搭建及常见问题(XAMPP安装失败.Apache/MySQL启动失败),thinkphpxampp 本文为大家详细分享了搭建ThinkPHP框架时遇到的问题,为大家提供了解决方法, ...

  2. 02 ABY框架的搭建及踩到的坑

    参考资料:https://github.com/encryptogroup/ABY 前言: ABY框架在Ubuntu系统中完成依赖包的安装和运行环境的配置之后,在搭建ABY框架还是出现了一些问题,下面 ...

  3. git web框架搭建_Git,Python Web框架,AI,机器学习,Android,Linux和更多必读内容

    git web框架搭建 上周最受关注的是Kedar Vijay Kulkarni编写的新Git系列中的最新一期,随后是Nicholas Hunt-Walker编写的 Python Web框架系列中的最 ...

  4. exec不同文件l怎么汇总_mount命令详解及常见问题汇总

    一 .mount命令(用来挂载硬盘或镜像等) 用法:mount [-t vfstype] [-o options] device dir 1.-t vfstype 指定文件系统的类型,通常不必指定.m ...

  5. Android最好用的项目框架搭建

    本篇先记录下当前项目中涉及的主要技术要点.也算是对所作项目的一次总结.如果这个过程能对你有些许的帮助,那可能就显得有意义点了. 一个完整的Android项目会涉及后台和前端.我们只关注于前端,也就是我 ...

  6. 软件测试——接口常见问题汇总

    目录 前言 一.接口用例设计 二.接口常见问题汇总 结语 前言 今天我们来聊聊接口设计用例设计,说到这个接口,相信绝大多数的测试员都有遇到过某些棘手的问题,那么今天我们就来总结一下在接口方面会遇到的难 ...

  7. 神经网络学习小记录-番外篇——常见问题汇总

    神经网络学习小记录-番外篇--常见问题汇总 前言 问题汇总 1.下载问题 a.代码下载 b. 权值下载 c. 数据集下载 2.环境配置问题 a.20系列所用的环境 b.30系列显卡环境配置 c.CPU ...

  8. [Web]如何利用Boostrap框架搭建一个还可以的静态网站(六_子页)

    文章目录 返回总结 整体效果 组件 vedio题目 vedio博主介绍 vedio vedio用户留言 电子烟评测块 辩论块 代码 html ElectronicCigarettes.html 返回总 ...

  9. Spring框架搭建

    Spring [[Spring AOP 面向切面编程]] [[Spring 项目的部署]] [[Spring事务]] [[Spring JDBC和事务控制]] [[Spring 的定时调度]] [[S ...

  10. Flume多source,多sink组合框架搭建

    Flume多source,多sink组合框架搭建 文章目录 Flume多source,多sink组合框架搭建 一.实验目的 二.实验原理 三.实验环境 四.实验内容 五.实验步骤 总结 一.实验目的 ...

最新文章

  1. 深圳湾口岸明起开通公交大巴
  2. junit jumpstart
  3. 页面排序(上下元素对换)
  4. TCP/IP 网络编程 (三)
  5. Windows下开发Perl程序之环境搭建
  6. 兰州理工大学linux试题,兰州理工大学学期《电子技术》试题.doc
  7. 公司因为薪资问题,走了一个各方面都不错的老工人,花更多的钱招来一个跨行业新手,这是为什么?
  8. 请求发送者与接收者解耦——命令模式(三)
  9. 闩锁效应的产生原因及解决办法
  10. 深度竞品分析:阿里旗下闲鱼与58旗下转转
  11. 将通达信的背景设置成白色
  12. python阿拉伯数字转中文_阿拉伯数字转化为中文数字
  13. php过滤文本中的手机号,座机号,qq,邮箱地址
  14. pic单片机流水灯循环右移c语言,PIC单片机流水灯程序
  15. EChart案例-折线面积渐变色
  16. VR/AR/MR/CR/XR概念及应用
  17. Android 11 PackageManagerService源码分析(一):PMS启动的总体流程
  18. java 图片不失真缩放,ico格式图片转换,透明图层,jar->exe
  19. C++ async future deferred
  20. web前端进阶<7>:3d图像翻转效果

热门文章

  1. 智能机柜PDU:同为科技(TOWE)多功能智能PDU插座推荐
  2. 跨境电商独立站怎么做?关键因素是什么?外贸运营,独立站运营
  3. 亲自安装快速行进法(fast marching)MATLAB工具箱遇到的问题及解决
  4. 基于机智云物联网技术的寝室系统设计
  5. 重大突破!东方时尚一举拿下1.9亿元飞行员培训订单!
  6. 大学时代的恋爱,是如何走到最后的?
  7. 锐捷网络亮相2017安博会 创新方案引关注
  8. React Hooks 实战案例
  9. 《IT行业安全类职位面试360度全方位解读》
  10. 网站访问量大 怎样优化mysql数据库