APS手动编译,CLion测试

一、简介
APSI——Asymmetric PSI:
私用集交集(PSI)是指这样一种功能,即双方都持有一组私用项,可以在不向对方透露任何其他信息的情况下检查他们有哪些共同项。集合大小的上限被假定为公共信息,不受保护。

APSI(不对称PSI)库基于eprint.iacr.org/2021/1116中描述的协议为不对称集合大小提供PSI功能。例如,在许多情况下,一方可能持有数百万条记录的大型数据集,而另一方希望了解数据集中是出现了单个特定记录还是出现了少量记录。我们称之为未标记模式下的APSI。

然而,在许多情况下,查询器还希望为每个匹配的记录检索一些信息。这可以被视为具有隐私保护批量查询功能的键值存储。我们使用术语项和标签来指代这样一个键值存储中的键和值,并在标记模式下调用此APSI。

注意:除非实际需要标记模式,否则使用未标记模式会更有效率(在通信和计算方面)。

二、安装教程
若是简单测试可以尝试使用vcpkg安装:

./vcpkg install apsi

开发者模式安装,确定安装需要的依赖:

Dependencyvcpkg name
Microsoft SEALseal[no-throw-tran]
Microsoft Kukukuku
Log4cpluslog4cplus
cppzmqcppzmq (needed only for ZeroMQ networking support)
FlatBuffersflatbuffers
jsoncppjsoncpp
Google Testgtest (needed only for building tests)
TCLAPtclap (needed only for building CLI)

接下来我们要逐个安装依赖,里面会出现需要手动调时的东西,加油!
1.seal 4.1 :

git clone https://github.com/microsoft/SEAL.git
git checkout https://github.com/microsoft/SEAL.git
cd SEAL
git checkout origin/4.1.0
cmake -S . -B build  -DSEAL_THROW_ON_TRANSPARENT_CIPHERTEXT=OFF
cmake --build build
sudo cmake --install build可以指定安装路径--prefix /Users/admin/git/SEAL-4.1.0/seal_4.1

2.kuku

git clone https://github.com/microsoft/Kuku.git
cd Kuku
cmake -S . -B build
cmake --build build
sudo cmake --install build

3.Log4cplus

git clone --recurse-submodules https://github.com/log4cplus/log4cplus
cd log4cplus
cmake -S . -B build
cmake --build build
sudo cmake --install build

4.cppzmq

git clone https://github.com/zeromq/cppzmq.git
cd cppzmq
pip install Zeromq
cmake -S . -B build
cmake --build build
sudo cmake --install build

5.FlatBuffers

git clone https://github.com/google/flatbuffers.git
cd flatbuffers
cmake -S . -B build
cmake --build build
sudo cmake --install build

6.jsoncpp

git clone https://github.com/open-source-parsers/jsoncpp.git
cd jsoncpp
cmake -S . -B build
cmake --build build
sudo cmake --install build

7.Google Test

git clone https://github.com/google/googletest.git
cd googletest
cmake -S . -B build -DCMAKE_CXX_COMPILER="c++" -DCMAKE_CXX_FLAGS="-std=c++14 -stdlib=libc++"
cmake --build build
sudo cmake --install build

8.TCLAP

下载:https://sourceforge.net/projects/tclap/
解压
cd tclap
cmake -S . -B build -DCMAKE_CXX_COMPILER="c++" -DCMAKE_CXX_FLAGS="-std=c++14 -stdlib=libc++"
cmake --build build
sudo cmake --install build

如果你可以走到这一步距离大功告成仅差最后一步啦~

上述过程中会出现很多bug,欢迎将问题和解决方案留在评论区🙏

cmake适配
1.使用clion打开APSI:

git clone https://github.com/microsoft/APSI.git

2.打开CMakeList.txt
197行:option(APSI_BUILD_TESTS ${APSI_BUILD_TESTS_OPTION_STR} OFF) 改成
option(APSI_BUILD_TESTS ${APSI_BUILD_TESTS_OPTION_STR} ON)
若出现下面这个错误:

 Linking CXX executable bin/unit_tests
Undefined symbols for architecture arm64:"log4cplus::Logger::getInstance(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)", referenced from:apsi::Log::Configure() in libapsi-0.11.a(log.cpp.o)apsi::Log::SetLogLevel(apsi::Log::Level) in libapsi-0.11.a(log.cpp.o)apsi::Log::DoLog(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, apsi::Log::Level) in libapsi-0.11.a(log.cpp.o)"log4cplus::Logger::log(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, char const*, int, char const*) const", referenced from:apsi::Log::DoLog(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, apsi::Log::Level) in libapsi-0.11.a(log.cpp.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
#在其中增加依赖位置:
include_directories(/usr/local/include)
link_directories(/usr/local/lib)

这时打开test/unit/src/unit_tests_runner.cpp 仍会出现编译失败的问题,

gtest-port.h:281:2: error: C++ versions less than C++14 are not supported.
#error C++ versions less than C++14 are not supported.

确定自己使用的是C++14 以上版本,删除cmake-build-debug,重新编译。

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

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

相关文章

QtCreator报大量未知标识符错误的解决方法

目录 前言背景介绍问题1问题1解决方法问题2问题2 解决方法总结 前言 本文记录了在使用QtCreator开发时遇到的一个错误&#xff0c;导致编译时出现大量的“未知标识符”&#xff0c;经过一番努力最终解决了这个问题&#xff0c;特在此记录。 背景介绍 Qt项目在麒麟V10 系统下…

【DTEmpower案例操作教程】向导式建模

DTEmpower是由天洑软件自主研发的一款通用的智能数据建模软件&#xff0c;致力于帮助工程师及工科专业学生&#xff0c;利用工业领域中的仿真、试验、测量等各类数据进行挖掘分析&#xff0c;建立高质量的数据模型&#xff0c;实现快速设计评估、实时仿真预测、系统参数预警、设…

X509证书结构

使用ASN.1语言描述&#xff0c;我们可以将X509Certificate抽象为以下结构&#xff1a; Certificate :: SEQUENCE {tbsCertificate TBSCertificate,signatureAlgorithm AlgorithmIdentifier,signature BIT STRING }即基本证书域、签名算法、签名值。 其…

手机上记录的备忘录内容怎么分享到电脑上查看?

手机已经成为了我们生活中不可或缺的一部分&#xff0c;我们用它来处理琐碎事务&#xff0c;记录生活点滴&#xff0c;手机备忘录就是我们常用的工具之一。但随着工作的需要&#xff0c;我们往往会遇到一个问题&#xff1a;手机上记录的备忘录内容&#xff0c;如何方便地分享到…

设计模式——3. 抽象工厂模式

1. 说明 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一组相关或依赖对象的方式,而无需指定它们的具体类。抽象工厂模式是工厂模式的扩展,它关注于创建一组相关的对象家族,而不仅仅是一个单一的对象。 抽象工厂模式通常涉及以下几个角…

微信小游戏从零到上线系列文章整理,建议收藏

引言 本系列是《从零开始开发贪吃蛇小游戏到上线系列》&#xff0c;欢迎大家关注分享收藏订阅。 大家中秋快乐&#xff0c;我是亿元程序员&#xff0c;一位有着8年游戏行业经验的主程。前面笔者给大家讲解了微信小游戏如何从零到上线的流程。可能很多小伙伴都还没有看到。 本…

【Oracle】Oracle系列之十一--PL/SQL

文章目录 往期回顾前言1. PL/SQL语句块组成2. 变量的声明与使用&#xff08;1&#xff09;变量声明&#xff08;2&#xff09;变量赋值 3. 控制语句&#xff08;1&#xff09;分支语句&#xff08;2&#xff09;循环语句 4. 异常处理&#xff08;1&#xff09;系统异常&#xf…

某高校的毕设

最近通过某个平台接的单子&#xff0c;最后Kali做的测试没有公开可以私聊给教程。 下面是规划与配置 1.vlan方面&#xff1a;推荐一个vlan下的所有主机为一个子网网段 连接电脑和http客户端的接口配置为access接口 交换机与交换机或路由器连接的接口配置为trunk接口---也可以…

Golang中的类型转换介绍

Golang中存在4种类型转换&#xff0c;分别是&#xff1a;断言、显式、隐式、强制。下面我将一一介绍每种转换使用场景和方法 一、断言类型转换 主要是判断变量是否可以转换成某一类型。断言主要用于变量是interface{}类型&#xff08;接口类型&#xff09;的情况&#xff0c;…

Python-表白小程序练习

测试代码 在结果导向的今天&#xff0c;切勿眼高于顶&#xff0c;不论用任何方法能转换、拿出实际成果东西才是关键&#xff0c;即使一个制作很简易的程序&#xff0c;你想将其最终生成可运行的版本也是需要下一番功夫的。不要努力成为一个嘴炮成功者,要努力成为一个有价值的人…

阿里云网络、数据中心和服务器技术创新优势说明

阿里云服务器技术创新、网络技术创新、数据中心技术创新和智能运维&#xff1a;云服务器方升架构、自研硬件、自研存储硬件AliFlash和异构计算加速平台&#xff0c;以及全自研网络系统技术创新和数据中心巴拿马电源、液冷技术等技术创新说明&#xff0c;阿里云百科aliyunbaike.…

conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题

上一篇博客《conan入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败》解决了conan 1.60.0交叉编译boost/1.80.1的问题后&#xff0c;我继续交叉编译openssl/3.1.2时又报错了 conan install openssl/3.1.2 -pr:h aarch64-linux-gnu.…

Linux--进程间通信之命名管道

目录 前言概念命名管道的创建命名管道特性 命名管道通信建立连接资源处理 Client && Server通信总结 前言 上一篇文章介绍匿名管道的进程间通信只适合在具有血缘关系的进程间进行通信&#xff0c;但是如果我们想让两个不相关的进程实现通信&#xff0c;使用匿名管道显…

某企查ymg_ssr列表详情

js篇— 今天来看下某企查的列表详情–侵删 header发现这个参数 先断点一下 然后上一步 就到了这个地方 就开始扣一下这个js 三大段&#xff0c;先不解混淆了&#xff0c; 给a粘贴出来 &#xff0c;去掉自执行 给结果稍微改一下 缺windows&#xff0c;开始补环境 直接上…

Linux常见指令(1)

Linux常见指令[1] 一.前言1.操作系统简述 二.Linux常见指令1.登录Xshell2.Linux下的常见命令1.pwd2.ls1.ls -a2.ls -d3.ls -l 3.cd Linux中的文件系统1.文件的相关知识2.Linux下目录结构的认识1.什么叫做路径?2.Linux的整体目录结构3.为什么要有路径呢?4.绝对路径与相对路径 …

常识判断 --- 科技常识

目录 力与热 光和声 航空成就 垃圾分类 百科知识 血型 二十四节气歌 春雨惊春清谷天 夏满忙夏暑相连 秋处露秋寒霜降 冬雪雪冬小大寒 力与热 光和声 航空成就 垃圾分类 百科知识 血型

ThemeForest – Canvas 7.2.0 – 多用途 HTML5 模板

ThemeForest 上的 HTML 网站模板受到全球数百万客户的喜爱。与包含网站所有页面并允许您在 WP 仪表板中自定义字体和样式的 WordPress 主题不同&#xff0c;这些设计模板是用 HTML 构建的。您可以在 HTML 编辑器中编辑模板&#xff0c;但不能在 WordPress 上编辑模板&#xff0…

35 LRU缓存

LRU缓存 题解1 双map&#xff08;差2个testcases&#xff09;题解2 哈希表双向链表&#xff08;参考&#xff09;题解3 STL:listunordered_map 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正…

SpringMVC+统一表现层返回值+异常处理器

一、统一表现层返回值 根据我们不同的处理方法&#xff0c;返回的数据格式都会不同&#xff0c;例如添加只返回true|false&#xff0c;删除同理&#xff0c;而查询却返回数据。 Result类 为此我们封装一个result类来用于表现层的返回。 public class Result {//描述统一格式…

国庆中秋喜相逢

鲁迅先生曾经说过&#xff0c;“一个国家的文学&#xff0c;就是那个民族心灵的缩影。”在这个充满着诗与远方的中秋佳节&#xff0c;我们迎来了又一个国庆节&#xff0c;不由自主地感慨起这个祖国的壮美与辉煌。 中秋节&#xff0c;是中华民族传统的佳节之一&#xff0c;也是…