在按照网上的教程安装HElib的过程中,遇到一些问题,在这里记录一下安装过程以及问题的解决。
首先,建议使用Ubuntu20.04版本,我一开始用的是18.04版本的,但是在make的过程报错没有得到解决,在查看官方 INSTALL.md的时候发现18.04能下载到的依赖的版本不符合。 (仅供参考) 官方也提出使用20.04版本。
P.S.我在使用20.04版本时没有换源,下载速度也很快。如果发现下载很慢,再考虑换源。
下载所需依赖
- pthreads
- git >= 2.27 (required to build and run the HElib test suite)
- GNU make >= 4.2
- g++ >= 9.3.0 (recommended g++ 10.3.0)
- cmake >= 3.16
- clang-format >= 9.0.0
- m4 >= 1.4.16
- patchelf >= 0.9 (if building on Linux)
除了pthreads以外,其他的均使用sudo apt install
命令安装,20.04中下载到的版本都是符合的。
但是没有安装也可以成功编译,后面会详细说明。
下载HElib库
从github仓库下载
# git clone https://github.com/homenc/HElib.git
1. 创建目录
cd HElib
mkdir build
cd build
2. 运行cmake
cmake -DPACKAGE_BUILD=ON -DCMAKE_INSTALL_PREFIX=/home/wuyy/helib_install ..
/home/wuyy/helib_install是安装路径
3. 利用make命令编译
# make
# ctest
# make install
P.S.在make步骤时,如果有pthreads库,可以设置make -j16 (数字可改)
多线程编译
编译的结果在helib_pack中,将其复制到前面创建的安装路径/home/wuyy/helib_install(可更改),再make install
(在build目录下)
如果步骤2是通过-DPACKAGE_BUILD=ON
运行的,则测试可以用ctest
命令
以上就安装完成了,所有头文件都在include中
简单使用
例子的使用参考examples/README.md
tutorials包含CKKS方案以及8个记录在案的示例,从基本操作到更复杂的序列化
示例程序使用BGV方案
- BGV_binary_arithmetic(二进制算法)
- BGV_country_db_lookup(BGV国家数据库查找)
- BGV_packed_arithmetic(BGV压缩算法)
和上面的步骤一样,要在examples下创建一个build目录,用于构建项目,运行cmake:
mkdir build
cd build
cmake [-Dhelib_DIR=<directory-to-installed-HElib>/share/cmake/helib] <directory-to-examples> ..
我的<directory-to-installed-HElib>是/home/wuyy/helib_install,所以这里的命令为cmake -Dhelib_DIR=/home/wuyy/helib_install/helib_pack/share/cmake/helib ..
此时bin文件夹里没有东西,make之后生成示例程序
P.S.直接在build目录下make,会make所有示例。也可以进入某一个示例 如BGV_country_db_lookup目录,再执行make
我在这里make了所有的:
然后bin目录中就有示例程序了
运行一个示例程序:
./BGV_country_db_lookup
报错说明要将csv文件复制进当前目录
cp ../../BGV_country_db_lookup/countries_dataset.csv ./
./BGV_country_db_lookup
运行成功。