记录下前几天在安装多密钥TFHE库的时候遇到的一个问题,在make这一步报错提示如下:
查遍了CSDN,说是因为编译器把警告视为错误引起的,让修改makefile里的代码,加上-wro或删掉某些类似的等等,尝试了也没解决。
后来在Github算法库的Issues栏中发现了同样的问题以及解决办法:Disable 'restricted' warning in spqlios-fft-impl.cpp · Issue #10 · ilachill/MK-TFHE · GitHub
具体就是把 spqlios-fft-impl.cpp下的346-359行代码前后加上几行gcc编译指示的代码:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wrestrict"
dotp4(tmp0, re1, tcs); // re*cos
dotp4(tmp1, re1, tsn); // re*sin
dotp4(tmp2, im1, tcs); // im*cos
dotp4(tmp3, im1, tsn); // im*sin
sub4(tmp0, tmp0, tmp3); // re2
add4(tmp1, tmp1, tmp2); // im2
add4(tmp2, re0, tmp0); // re + re
add4(tmp3, im0, tmp1); // im + im
sub4(tmp0, re0, tmp0); // re - re
sub4(tmp1, im0, tmp1); // im - im
copy4(re0, tmp2);
copy4(im0, tmp3);
copy4(re1, tmp0);
copy4(im1, tmp1);
#pragma GCC diagnostic pop
然后重新make,成功。
运行测试代码: