文章目录
- ABY的搭建以及使用
- 前言
- ABY库的下载、安装及测试
- CLion配置
- 后续
- 杂项
- 项目改名
- 使用其他的库
- 最后
ABY的搭建以及使用
前言
- 仅做记录,仅供参考,不同人有不同的使用方式
- 命令手敲,可能有错,自己辨识
- 勿问,我懂的也不多,瞎搞的
ABY库的下载、安装及测试
- Github 官网
- APT安装跳过
- 推荐递归下载,下载后备份这个库,以防后面搞烂
git clone --recursive https://github.com/encryptogroup/ABY.git cp -r ABY ABY_bak
- 编译及安装(推荐安装到非标准位置)
cd ABY mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX="" make mkdir /usr/local/ABY make DESTDIR=/usr/local/ABY install
- 源码编译运行后有点问题需要修改,cmake_constants.h is not found #197,参考:配置OPPRF-PSI密码学协议
- 安装后在
/usr/local/ABY
里有库文件啥的,但是make install安装后,再编译运行自己的程序或者样例程序就总报各种错,什么找不到relic啦之类的。所以我把/usr/local/ABY
备份后删掉了,其实只是要里面的include
目录而已。zip -r ABY_include.zip /usr/local/ABY/include # 因为后面要在Windows下使用,用zip打包方便一点(而且我也不熟tar命令...) sz ABY_include.zip # 可能需要安装lrzsz: apt install lrzsz(用xftp当我没说) # 改名或备份 mv /usr/local/ABY /usr/local/ABY_bak rm -rf /usr/local/ABY (要备份就备份吧,我备份了后面好像没什么用,初配建议还是备个份,推荐改名)
- 回到
ABY/build
,清空build里的东西:rm -rf ./*
- 测试(测不测由你,建议测测,熟悉下流程)
- 返回
ABY
,修改CMakeList.txt: - 删掉最后的ABY_BUILDE_EXE,待会重新写一个
- 删掉开头这个option(可选,删不删无所谓,反正用不到)
- 在最后添加子目录,用于测试(测不测随你)
add_subdirectory(src/ABY_TEST)
- 你现在应该在
ABY
目录下,在src
内有测试样例,但是很多,选一个出来测试。mkdir src/ABY_TEST cp -r src/examples/millionaire_prob/ src/ABY_TEST # 把百万富翁的样例copy出来
- 由于路径比之前样例里的百万富翁的样例少了一层目录,所以里面的
cpp
和.h
文件里的include路径需要少掉一层../
,自己改就行,记得common
路径里也有代码,也需要改
- 直接在ABY目录下编译运行
cmake . make
- 顺利的话在bin目录内就能看到可执行文件,能跑通就算成功
- 返回
- 现在整个ABY目录下就算搭建好的框架了,建议在这里面做工作
CLion配置
- CLion挂载到ABY目录,改下Mapping
- 在CLion下测试,可以把百万富翁那个样例拉出来测试,同样注意路径问题,CMakeList自行修改,给个参考:
- 跑通就算成功
- 提一嘴,百万富翁这个例子需要输入参数,并且需要两个终端运行,CLion可以在配置出修改
后续
- 到这里虽然程序跑通了,但是CLion没办法获取到ABY库的信息,代码处都是报红。之前试过,如果安装ABY库,也就是前面提到的安装到
/usr/local/ABY
,安装后CLion可以检索到ABY库,include不报错,代码不报红了,但是!跑不通了,程序运行的时候提示找不到那些package。 - 权衡利弊,我最终选用的解决方案是,ABY库安装后从云端拉到本地,然后云端的ABY库删掉,这样程序就能顺利运行了。然后把下载到本地的ABY库里的include里的文件拷贝到项目下,然后把
include <>
的部分换成include ""
,这样代码就不会报错,程序也能正常运行。
- 再提一嘴,把ABY的include里的文件拷贝到项目内后,可以设置这几个目录不同步到云端。还是在Deployment处,前面在Mapping设置过挂载的路径,在这里可以设置Excluded Paths
杂项
项目改名
- CMakeList里
project()
可以修改项目名,原本是ABY,如果要改名的话,注意,在cmake路径下有一个文件:ABYConfig.cmake.in
,如果只修改项目名的话,会报错找不到cmake.in文件,需要把ABYConfig.cmake.in
文件改名为你的项目名Config.cmake.in
使用其他的库
- 建议在ABY里面的CMakeList上改,加一些
find_package()
、add_executable()
和target_link_libraries()
应该是没什么问题的 - 如果有其他的,建议一条一条加,加完cmake编译一下看看有没有问题,在保证使用其他库后也能用的情况下,能少加就少加,不然可能不兼容(血的教训),具体得自己去排雷
- 下面这句是没问题的:
- 下面这句就出问题了:
最后
- 最终效果就是,Clion上代码显示正常,无报错,调试和运行也能在云端正常运行
- 搭这玩意花了我两天,建议新手学下CMakeList,还得熟悉Clion与Docker的连接部署等操作,参考我的上一篇博客:Clion连接Docker,使用HElib库
- 搭了两天后的记录,可能不太全面,只提供了大致的思路,细节方面需要自己去琢磨与尝试
- 遇到其他问题也欢迎与我交流,看到就会回,不过每个人的需求不同,根据自己的需求搭环境