2021SC@SDUSC
总览
- 一:组内分工
- 二:在Windows上安装PALISADE
- 1 安装MINGW64的shell命令行
- 2 克隆项目仓库
- 3 环境的构建
- 4 测试用例
- 5 错误解决方案
- 5.1 fatal: unable to access 'https://github.com/xxx/autowrite.git/': OpenSSL SSL_read: Connection was reset, errno 10054
- 5.2 fatal error: cereal/cereal.hpp: No such file or directory
- 5.3 error while loading shared libraries: libPALISADEcore.dll: cannot open shared object file: No such file or directory
- 三:PALISADE项目结构
一:组内分工
我的研究内容
- 用于整数计算的Brakerski-Gentry-Vaikuntanathan(BGV)方案
- 门限全同态加密
- PALISADE中的离散高斯取样实现
二:在Windows上安装PALISADE
官网上推荐安装方法为使用MinGW64安装。可以安装一个叫MSY32的一个MINGW 64-bit的shell命令行。
1 安装MINGW64的shell命令行
官网上推荐安装方法为使用MinGW64安装。可以安装一个叫MSY32的一个MINGW 64-bit的shell脚本。
安装链接:MSYS2
下载完成后打开程序进入安装程序,选择默认安装配置即可。该shell命令行被默认安装在了C:\msys64,以管理员的身份运行64位的程序。
键入以下命令更新包与数据库:可能要执行两次
pacman -Syu
再分别键入以下命令安装所需的模块:
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-cmake
pacman -S autoconf
pacman -S make
pacman -S git
2 克隆项目仓库
访问[PALISADE wiki中文站](欢迎访问PALISADE 的中文Wiki(维基百科) | PALISADE (zhigang-chen.github.io))
点击在Windows上安装PALISADE,点击左侧的Repository
复制url,在刚刚安装的MSY32中输入:
git clone https://gitlab.com/palisade/palisade-development.git
完成clone后可在C:\msys64\home\Administrator\palisade-development
中找到clone的项目。
3 环境的构建
利用cd命令将MSY32命令行的默认目录切换到刚刚克隆的项目文件夹下(palisade-development),执行以下命令:
mkdir build
cd build
cmake ..
翻译下就是在palisade-development文件夹下创建一个build文件夹,再切换到这个文件夹下,执行上一级文件夹中的CMakeList.txt中的命令。
注意的是,不要在校园网的环境下执行,校园网无法连接上github,而cmake命令涉及其中设计子模块的更新,需要从github上克隆项目。
如果遇到以下错误,就是无法连接上github。详情见5.1.
完成后在palisade-development\third-party中的四个子模块应该都有文件,没有的话可在GitLab仓库中点击相应的third-party文件夹,再点击对应的子模块自行clone,详情见5.2
此时继续在命令行内键入以下命令:
make
make install
漫长的等待:
make install结束后会在C:\Program Files (x86)\PALISADE下创建一个项目文件夹。
4 测试用例
运行一个单元测试来确保所有的依赖已安装。在palisade-development/build文件夹下开启MSY32 键入:
make testall
有错误请见5.3
运行样例代码:
bin/examples/pke/simple-integers
5 错误解决方案
5.1 fatal: unable to access ‘https://github.com/xxx/autowrite.git/’: OpenSSL SSL_read: Connection was reset, errno 10054
取消git本身的https代理,使用自己本机的代理,在MSY32中键入:
//取消http代理
git config --global --unset http.proxy
//取消https代理
git config --global --unset https.proxy
5.2 fatal error: cereal/cereal.hpp: No such file or directory
这是因为执行cmake ..
命令时竟然没有clone Cereal子模块
按图点击以下连接自己克隆一下就行。
5.3 error while loading shared libraries: libPALISADEcore.dll: cannot open shared object file: No such file or directory
没有添加lib文件夹的路径到Path变量中,导致执行make testall
命令时找不到这个libPALISADEcore.dll文件
MSY32是一个小型的Linux系统,可以通过在Linux系统内添加环境变量的方式来实现。输入以下命令修改bashrc文件
vim ./.bashrc
在最后一行输入你的lib所在的位置
保存退出重新执行测试命令即可
三:PALISADE项目结构
整个项目的大体结构如下:
.
├── benchmark
├── build
├── doc
├── src
├────── binfhe
├────── core
├────── pke
├── test
└── third-party
这些文件夹的描述如下:
文件夹 | 介绍 |
---|---|
benchmark | 使用google基准框架对PALISADE库组件进行基准测试 |
build | 二进制文件与构建脚本(由用户创建) |
doc | 库组件的文档,包括make过程生成的doxygen文档 |
docker | Docker文件和文档 |
src | 库源代码。每个子组件有四到五个子目录:include(用于库头文件)、lib(用于库源文件)、unittest(用于谷歌测试用例)、examples(用于代码示例)和optional extras(用于额外的代码示例)。 |
third-party | 第三方发布的代码(NTL/GMP + git 子模块) |
test | google单元测试代码 |