0 OpenFHE介绍
如果你能在本站搜索到我得教程,想必对OpenFHE有一定的了解,这里就不作过多的赘述了,复制一段来自OpenFHE官网翻译过来的介绍:OpenFHE 是一个开源项目,它为领先的后量子全同态加密 (FHE) 方案提供高效、可扩展的实现。
话不多说,直接开搞。
1 所需环境
1.1 系统&版本
本文使用的部署环境为Ubuntu22.04.4,如果你不知道你正在用的Ubuntu版本,可以通过这个命令查看:
lsb_release -a #查看Ubuntu版本号
输入命令后可以看到如下结果:
建议使用最新版Ubuntu,下载地址:Ubuntu系统下载 | Ubuntu,因为安装OpenFHE要求clang的版本至少为clang-11,而我试验过的Ubuntu20系列还在用clang-10,clang更新起来非常麻烦,而且教程少,容易报错,而且报错还搜不到解决方法,所以在这里推荐最新版Ubuntu,按照我的教程来,就能安装成功。
1.2 必备组件&版本
1.2.1 G++&cmake
OpenFHE官网中对于Linux G++并没有版本要求,一般使用apt-get下载的都是可用的最新版。
使用下面的代码来安装g++和cmake。
sudo apt-get install build-essential #这里面包含了g++
sudo apt-get install cmake
安装成功后查看G++版本
g++ --version
1.2.2 clang
通常,g++ 是 Linux 的默认编译器,但也可以安装 clang++。安装clang++的版本必须高于11.0.0,不然在cmake编译的时候会显示clang版本过低。
如果安装旧版本的clang,可能还需要安装OpenMP, 官网中给出的安装代码如下:
sudo apt-get install clang
sudo apt-get install libomp5
sudo apt-get install libomp-dev
安装完成后运行下面的两个命令,将clang/clang++配置为C和C++的默认编译器(这里给出的路径为默认路径,如果不是按照默认路径安装的更改为安装路径即可)。这里以clang11为例,安装其他版本的把数字改为对应版本即可。
代码如下:
export CC=/usr/bin/clang-11
export CXX=/usr/bin/clang++-11
官网上也给出了clang默认版本的配置方法,但是这个方法我尝试了之后发现有报错,这里也给出来,如果能帮到你那就更好了。
注意!如果你已经配置过其他版本,不要把接下来的代码贴过去,会报错!!!
对于clang的默认版本,例如Ubuntu20.04中的v6:
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
到这里,安装OpenFHE的前置组件就已经准备就绪了,接下来就可以开始安装OpenFHE本体了!
2 OpenFHE安装包下载
现在网上的教程比较少,有部分教程说可以在csdn上先下载OpenFHE的main文件,但是main文件里面third-party子文件是空的,还需要再单独下载third-party文件内容,然后再导入进去,我试了两次,分别用了CentOS和Ubuntu,都没有成功,最后通过直接git clone的方式成功了,代码如下:
git clone --recurse-submodules https://github.com/openfheorg/openfhe-development.git
如果没有安装git的话可以用apt-get安装一下:
sudo apt-get install git
这里我直接把OpenFHE的安装包下载到根目录了,可以根据自己的情况下载到其他目录。
2.1 报错解决
操作过程中,使用git克隆安装包时出现了这个报错:
搜了一下,只要两条代码即可解决,原理是解除http和https的全局代理
git config --global --unset http.proxy
git config --global --unset https.proxy
3 OpenFHE安装
3.1 使用cmake编译OpenFHE安装包
进入openfhe-development的安装路径,我是在根目录安装的,你需要找到你i的安装路径然后进入openfhe-development文件夹中,接下来需要创建一个名为“build”的文件夹,然后进入build文件夹,最后用cmake编译生成。
cd openfhe-development
mkdir build
cd build
cmake ..
接下来需要安装autoconf,它会在cmake编译时启用并生成编译文件。
sudo apt-get install autoconf
然后通过运行make来构建OpenFHE。
make
运行过程如图:
读条完毕之后,出现这个提示就代表成功了:
最后在系统目录中安装OpenFHE。
make install
结果如图:
3.2 测试安装完成情况
运行单元测试以确保所有功能按预期运行:
make testall
结果如下:
运行示例代码进行测试:
bin/examples/pke/simple-integers
要删除 make 生成的文件,可以执行:
make clean
要更改编译器,例如,从 g++ 更改为 clang++,或完全删除任何 cmake/make 构建文件,可以删除“build”文件夹并重新创建它。