CentOS7中安装MP-SPDZ
前言
在CentOS中需要依赖库的名称以及版本与MP-SPDZ官网提供的版本不统一,这里记录一下。
版本信息:
操作系统:CentOS 7
MP-SPDZ: 0.2.9
一、依赖库汇总
yum install autoconf gcc gcc-c++ git libboost-dev libboost-thread-dev \
libgmp3-dev libntl-dev libsodium-dev libssl-dev libtool m4 make man \
python sudo texinfo valgrind vim yasm tar bzip2 wget openssl11-devel \
openssl11-static zlib-devel libsodium-devel boost169-devel gmp-devel \
rh-python35 libsodium-static boost169-static zlib-static openssl \
openssl-perl llvm-toolset-7
手动安装MPIR和NTL:
wget http://mpir.org/mpir-3.0.0.tar.bz2
tar -xjf mpir-3.0.0.tar.bz2
rm mpir-3.0.0.tar.bz2
cd mpir-3.0.0/
./configure --enable-cxx
make
make install
wget https://shoup.net/ntl/ntl-11.3.2.tar.gz
tar -xzf ntl-11.3.2.tar.gz
cd ntl-11.3.2/src
./configure NTL_THREADS=off NTL_GMP_LIP=off NATIVE=off
scl enable devtoolset-7 "make -j8"
make -j8 install
安装后,下载MP-SPDZ压缩包,解压后。
cd MP-SPDZ
make -j 8 tldr
如果没有报错,那么恭喜你,编译成功。
但是大概率会出问题。
二、问题
1.GCC版本不对
Centos7中默认安装的gcc版本是4.8.5,但是MP-SPDZ需要的版本是5以上,所以需要升级,将环境中的gcc版本变更。
1、安装centos-release-scl
sudo yum install centos-release-scl
2、安装devtoolset,注意,如果想安装8.版本的,就改成devtoolset-8-gcc,以此类推
sudo yum install devtoolset-7-gcc*
3、激活对应的devtoolset,所以你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本
scl enable devtoolset-7 bash
大功告成,查看一下gcc版本
gcc -v
4、直接替换旧的gcc
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g+±4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
gcc --version
g++ --version
2. libsodium库有问题
安装 libsodium 1.0.18即可,步骤如下:
1、下载并解压
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz
tar -zxf libsodium-1.0.18-stable.tar.gz
cd libsodium-stable
2、编译安装
./configure --prefix=/usr
make && make check
sudo make install
sudo ldconfig
3. libtool 的版本有问题
安装 libtool 2.4.6 可以解决
1、下载并解压
wget http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz
tar -zxf libtool-2.4.6.tar.gz
cd libtool-2.4.6
2、编译安装
./configure --prefix=/usr
sudo make
sudo make install
sudo ldconfig
4. boost版本问题
1、使用安装包安装boost库,首先要下载安装包,可以到下面的链接找:
https://download.csdn.net/download/kaka__22/85201057
2、下载后解压
tar -zxvf boost-1.70.0.tar.gz
3、进入到解压目录
4、执行里面的脚本bootstrap.sh
./bootstrap.sh
5、有个可执行文件b2
./b2 install
如果不按这个命令编译可能会出现错误,这个要注意
5. 安装 libboost-dev找不到包
yum install boost-devel
6. 杂项
1、编译MP-SPDZ遇到的问题
应该是程序内部冲突的问题。运行一下命令可以解决
make clean
2、编译 .x协议遇到的问题
CentOS 7的系统编译器比较旧,使用以下命令完成
scl enable devtoolset-7 make ...