Я разархивировал файл HElib-master.zip на моей папке Downloads.
Затем я получил свой файл fhe.a в папке, Downloads/HElib-master/src, но когда я выполняю команду make Test_General
как обозначено здесь http://shaih.github.io/HElib/ я получаю ошибки компиляции как это:
/tmp/ccqnVZGx.o: In function TestIt(long, long, long, long, long, long, long, long, long, NTL::Vec<long> const&, NTL::Vec<long> const&):
Test_General.cpp:(.text+0x32a): undefined reference to FHEcontext::FHEcontext(unsigned long, unsigned long, unsigned long, std::vector<long, std::allocator<long> > const&, std::vector<long, std::allocator<long> > const&)
Я скопировал fhe.a
в моем urs/local/
, usr/local/include
и usr/local/lib
но это не работало.
Как установить HElib так, чтобы я мог скомпилировать свои источники? Или что я могу сделать для разрешения этих 'неопределенных ссылочных' ошибок?
Корректный способ создать тестовые программы в HElib/src
каталог, кажется, через названную цель Test_General_x
вместо плоскости Test_General
например.
$ make Test_General_x
HElib requires NTL version 9.4.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 -o Test_General_x Test_General.cpp fhe.a -L/usr/local/lib -lntl -lgmp -lm
Соответствующий раздел Make-файла
./%_x: %.cpp fhe.a
$(CC) $(CFLAGS) -o $@ $< fhe.a $(LDLIBS)
то, которое Вы видите, добавляет fhe.a
зависимость библиотеки.