homenc / HElib

HElib is an open-source software library that implements homomorphic encryption. It supports the BGV scheme with bootstrapping and the Approximate Number CKKS scheme. HElib also includes optimizations for efficient homomorphic evaluation, focusing on effective use of ciphertext packing techniques and on the Gentry-Halevi-Smart optimizations.
https://homenc.github.io/HElib
Other
3.15k stars 764 forks source link

Some problems with installing HElib #60

Closed asdcksk closed 5 years ago

asdcksk commented 9 years ago

Hello to all! Please, help with solving problems of installation of HElib. As well as it is told in a manual, I set gmp (version 6.0.0) and ntl (at first 9.0.2, then 9.1.1) OS: ubuntu-14.04.2-desktop-amd64 I set libraries according to the instructions in the file INSTALL.txt In Makefile tried to add and delete flags - std=c ++ 11 - lstdc ++ and - std=c ++ 0x But in case of a command 'make' in the console errors continue to appear(with flag -std=c=++0x):

HElib requires NTL version 6.1.0 or higher, see http://shoup.net/ntl If you get compilation errors, try to add/remove -std=c++11 in Makefile

g++ -g -O2 -Wfatal-errors -Wshadow -Wall -I/usr/local/include -c NumbTh.cpp NumbTh.cpp: In function ‘void MulMod(NTL::ZZX&, const NTL::ZZX&, long int, long int, bool)’: NumbTh.cpp:557:63: error: no matching function for call to ‘PrepMulModPrecon(long int&, long int&, double)’ mulmod_precon_t aqinv = PrepMulModPrecon(a, q, 1/((double)q)); ^ compilation terminated due to -Wfatal-errors. make: *\ [NumbTh.o] Error 1

Please, give advice for correction of these errors. Thanks in advance.

victorshoup commented 9 years ago

Looks like you have an older version of helib. Please make sure you have the latest.

asdcksk commented 9 years ago

I just downloaded again HElib now and run it without any flags and make & make check work! Thank you, Victor!

asdcksk commented 9 years ago

One more question: where I can find ready to use HElib? There's no in usr/local =/ Whether I shall use it from the HElib-master/src folder? And how i can start tests at least? Command "run" doesn't work..

You can laugh, I'm a lamer in it :D

I want to try it in the educational purposes for using in the master thesis... How I can use this library for implementation of fully homomorphic encryption in cloudy service, for example? Is anybody, who can hint me? :)

P.S. sorry for off-top

bogdan-kulynych commented 9 years ago

@asdcksk HElib builds library right in the src directory, it's called fhe.a. I just added a pull request #61 that allows for installation with make install, but for now, when building your program, you have to specify the path to HElib include files and HElib built library.

g++ -I/path/to/helib/src yourprogram.cpp /path/to/helib/src/fhe.a -lgmp -lntl

Alternatively, you can write your program in HElib's src directory and run

make yourprogram_x

For non-production purposes, you could also try my FHE library called libshe which is easier to use, mostly because the crypto behind it is much simpler.

xplittle commented 9 years ago

@asdcksk hi, I have the same problem, NTL/ZZ.h : there is no that file compilation terminated make: *\ [NumbTh.o] Error 1 do you solve this problem, I am looking forward your answer,Thank you

ShijiMariam commented 7 years ago

Hi, I got the same error while trying to install the library available at https://github.com/dwu4/fhe-si. I have ntl version 10.3.0. Can anyone please tell me how to fix it?

g++ -g -O2 -Wall -std=c++0x -I/usr/local/include -Wno-delete-non-virtual-dtor -o build/DoubleCRT.o -c DoubleCRT.cpp DoubleCRT.cpp: In member function ‘double DoubleCRT::addPrimesAndScale(const IndexSet&)’: DoubleCRT.cpp:195:67: error: no matching function for call to ‘PrepMulModPrecon(long int&, long int&, double)’ mulmod_precon_t bninv = PrepMulModPrecon(f, qi, 1.0/(double)qi); ^ In file included from /usr/local/include/NTL/ZZ.h:22:0, from /usr/local/include/NTL/vec_ZZ.h:5, from /usr/local/include/NTL/ZZX.h:5, from DoubleCRT.cpp:26: /usr/local/include/NTL/sp_arith.h:769:1: note: candidate: long unsigned int NTL::PrepMulModPrecon(long int, long int, NTL::sp_inverse) PrepMulModPrecon(long b, long n, sp_inverse ninv) ^~~~ /usr/local/include/NTL/sp_arith.h:769:1: note: no known conversion for argument 3 from ‘double’ to ‘NTL::sp_inverse’ /usr/local/include/NTL/sp_arith.h:869:31: note: candidate: NTL::mulmod_precon_t NTL::PrepMulModPrecon(long int, long int) static inline mulmod_precon_t PrepMulModPrecon(long b, long n) ^~~~ /usr/local/include/NTL/sp_arith.h:869:31: note: candidate expects 2 arguments, 3 provided Makefile:50: recipe for target 'build/DoubleCRT.o' failed make: *** [build/DoubleCRT.o] Error 1

victorshoup commented 7 years ago

This looks like the are using an old version of helib

Sent from my iPad

On Feb 4, 2017, at 2:21 AM, ShijiMariam notifications@github.com wrote:

Hi, I got the same error while trying to install the library available at https://github.com/dwu4/fhe-si. I have ntl version 10.3.0. Can anyone please tell me how to fix it?

g++ -g -O2 -Wall -std=c++0x -I/usr/local/include -Wno-delete-non-virtual-dtor -o build/DoubleCRT.o -c DoubleCRT.cpp DoubleCRT.cpp: In member function ‘double DoubleCRT::addPrimesAndScale(const IndexSet&)’: DoubleCRT.cpp:195:67: error: no matching function for call to ‘PrepMulModPrecon(long int&, long int&, double)’ mulmod_precon_t bninv = PrepMulModPrecon(f, qi, 1.0/(double)qi); ^ In file included from /usr/local/include/NTL/ZZ.h:22:0, from /usr/local/include/NTL/vec_ZZ.h:5, from /usr/local/include/NTL/ZZX.h:5, from DoubleCRT.cpp:26: /usr/local/include/NTL/sp_arith.h:769:1: note: candidate: long unsigned int NTL::PrepMulModPrecon(long int, long int, NTL::sp_inverse) PrepMulModPrecon(long b, long n, sp_inverse ninv) ^~ /usr/local/include/NTL/sp_arith.h:769:1: note: no known conversion for argument 3 from ‘double’ to ‘NTL::sp_inverse’ /usr/local/include/NTL/sp_arith.h:869:31: note: candidate: NTL::mulmod_precon_t NTL::PrepMulModPrecon(long int, long int) static inline mulmod_precon_t PrepMulModPrecon(long b, long n) ^~ /usr/local/include/NTL/sp_arith.h:869:31: note: candidate expects 2 arguments, 3 provided Makefile:50: recipe for target 'build/DoubleCRT.o' failed make: *** [build/DoubleCRT.o] Error 1

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

ShijiMariam commented 7 years ago

Isn't the function PrepMulModPrecon(long int&, long int&, double) from the NTL library? Then how will it be the problem of helib library?

victorshoup commented 7 years ago

That ntl interface got upgraded in a non backward compatible way. A very old version of helib uses the old interface, which is no longer supported

ShijiMariam notifications@github.com wrote:

Isn't the function PrepMulModPrecon(long int&, long int&, double) from the NTL library? Then how will it be the problem of helib library?

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/shaih/HElib/issues/60#issuecomment-277455134

-- Sent from my Android device with K-9 Mail. Please excuse my brevity.

ShijiMariam commented 7 years ago

Thank you for your response. I will look into it.

faberga commented 5 years ago

Closing as this is a very old issue reported against an old version of HElib. The entire install process has changed and we don't believe the reported issue is present in the current HElib version.