第一个错误:
执行
Scripts/tldr.sh
时出现:cp: cannot stat 'bin/Linux-avx2/*': No such file or directory
错误原因:你下的源代码不对,他确实没有这个文件。
解决办法:
办法1. 下载那个50多M的就没有这个问题。 下载链接:https://github.com/data61/MP-SPDZ/releases 下载那个tar.xz文件
办法2. 把这个文件拷贝到到对应文件夹内。至于这个文件去哪找,参考办法1.
第二个错误:
执行
make -j 8 tldr
时出现 git submodule update --init mpir
fatal: not a git repository (or any of the parent directories): . git
make :[Makefile:258:mpir-setup] Error 128
错误原因:下载后的文件里,没有mpir库。虽然你按照提示安装了一堆东西,但这里面不包含mpir。你可以打开mpir文件夹看看,里面是空的。
解决办法:
1. 下载mpir。链接:https://github.com/data61/MP-SPDZ 。找到并打开mpir文件夹
2. 下载这个文件夹并解压。
unzip -o mpir-55fe6a9f52ca532a611a89f67186ed915bbf1123.zip
3. 改名
mv mpir-55fe6a9f52ca532a611a89f67186ed915bbf1123 mpir
4. 进入你下载的SPDZ源代码根目录(注意,不是你下载的mpir根目录),删除原来的mpir文件夹
rm -rf mpir
5. 将解压的mpir文件夹移动到根目录下(注意,这步要根据你实际文件路径操作)
mv ../mpir ./
现在就把mpir的源文件移动到spdz里了。安装和配置mpir不需要我们操心,因为作者写的Makefile会帮我们配置好。
6. 进入根目录,找到并打开Makefile,找到第258行:
7. 注释掉第258行
8. 至此,修改完成,再次执行
make -j 8 tldr
稍等片刻就执行成功。
三、SimpleOT的安装
与mpir类似,但不需要注释makefile。
四、make时出现error
在make一个文件时,出现类似下面的错误。cc1plus: error: bad value ( tigerlake') for ' -march=' switch
g++和gcc版本问题,出现这个问题一般是版本在10以下,把它更新到10或者以上版本就好了。
sudo apt install gcc-10 g++-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10
sudo update-alternatives --config gcc
五、 make -j 8 Programs/Circuits 出错
错误描述:
git submodule update --init Programs/Circuits
error: pathspec 'Programs/Circuits' did not match any file(s) known to git
make: *** [Makefile:233: Programs/Circuits] Error 1
这是因为下载的源代码里没有相关文件。需要自己下载。
解决方法:
1. 删除Programes里的Circuits文件夹。
2.在spdz根目录执行
git submodule add https://github.com/mkskeller/bristol-fashion.git Programs/Circuits
如果下载不下来,也可以用
git submodule add git://github.com/mkskeller/bristol-fashion.git Programs/Circuits
3.下载完成后,再make就成功了。
这个解决办法主要使用git submodule命令的用法,想具体了解该命令的可以百度。这个办法也可以安装上述问题二三的mpir和SimpleOT库的安装,比较简单。
六、第六个错误
- Could NOT find Boost: Found unsuitable verston "1.71.0", but requtred is at least "1.75" (found/usr/include)
Make Error at cryptoTools/cmake/cryptoToolsDepHelper.cmake:209(message):
Fatled to find boost 1.75+ at "" or at system install
Call Stack (most recent call first):
Crusto01/akLis+s_+y+.90(include)
安装boost1.75失败。因为之前安装的boost版本是1.71,而libOTe需要1.75以上版本,所以会在tldr里更新这个boost版本,但是因为更新失败了而退出。
解决办法:
第一个办法,执行
make boost
第一个办法最简单。但是boost官网有点难连。如果失败的话可以多试几次。或者使用第二个办法。基本上多试几次就会解决。
第二个办法,手动安装:
七、第七个错误
运行代码的时候提示
error while loading shared libraries: libSPDZ.so: cannot open shared object file: No such file or directory
解决办法:重新编译一下libSPDZ.so
make libSPDZ.so
如果提示,该文件已经是最新的了,就把他删掉,在运行。