Loading

volepsi编译踩坑记录

[平台:WSL Ubuntu-22.04]
[时间:2024/5/20]
[仓库地址:volepsi]
最近需要实现一个基于vole的PSI方案,所以尝试编译了一下vole-PSI的代码。不说废话,直接开始。
首先根据Build指导直接clone加build。

git clone https://github.com/Visa-Research/volepsi.git
cd volepsi  
python3 build.py -DVOLE_PSI_ENABLE_BOOST=ON

我的wsl以前是没编译过PSI相关的项目,所以有些依赖需要先手动加上,比如libtool,直接用

sudo apt install libtool

然后继续进行build,发现还是不行

-- Configuring incomplete, errors occurred!
See also "/home/.../volepsi/out/libOTe/out/build/linux/CMakeFiles/CMakeOutput.log".
CMake Error at thirdparty/fetch.cmake:22 (file):
  file failed to open for reading (No such file or directory):

翻看前面的报错信息(没时间的直接跳到最后)

gmake: *** [Makefile:136: all] Error 2
CMake Error at thirdparty/fetch.cmake:28 (message):
  Build failed (2).
Call Stack (most recent call first):
  thirdparty/getMacoro.cmake:44 (run)
  cmake/coprotoFindDeps.cmake:85 (include)
  CMakeLists.txt:21 (include)

发现还是在获取其他依赖的时候出了问题,这里是Macoro,查看编译时对应的报错

/home/rui/Coding/PSI/volepsi/out/macoro/macoro/../macoro/trace.h:16:22: error: ‘source_location’ in namespace ‘std’ does not name a type
   16 |                 std::source_location m_location;
      |                      ^~~~~~~~~~~~~~~
/home/rui/Coding/PSI/volepsi/out/macoro/macoro/../macoro/trace.h:16:17: note: ‘std::source_location’ is only available from C++20 onwards
   16 |                 std::source_location m_location;

查了一下资料,这个地方是C++20的特性,所以怀疑我们编译时使用的C++版本不支持这个特性,继续往上翻找,发现编译信息里
MACORO_CPP_VER = 17 ~ cpp standard version
所以需要在这里修改cpp的版本为20,当我们继续往上看时,发现COPROTO也有这个问题-- Option: COPROTO_CPP_VER = 17,由于这是在获取依赖时出现的问题,所以需要定位到获取依赖的脚本。

在我写到这里的时候,repo作者在issue中回复了build error的问题,暂时先给出了一个回退到以前版本的方法,找到下面的文件

volepsi/out/coproto/thirdparty/getMacoro.cmake

取消注释第42行,亲测可行

回头分析编译报错的主要原因,就是由于依赖项的更新,导致原来的编译脚本不能进行正确的编译!

--2024-06-05--
补充遇到的bug,编译完成之后,运行了测试代码,运行到csv_test的时候报错,这里折腾了一会,将两个集合的size改小之后就可以通过测试了,具体原因等之后再看。

All Passed

posted @ 2024-05-21 11:03  TTTTORYYY  阅读(185)  评论(0)    收藏  举报