我将文件 HElib-master.zip 解压到我的下载文件夹中。
然后我在文件夹 Downloads/HElib-master/src 中获得了文件 fhe.a,但是当我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 以便我可以编译我的源代码?或者我该怎么做才能解决这些“未定义的引用”错误?
答案1
在目录中构建测试程序的正确方法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
Makefile 的相关部分是
./%_x: %.cpp fhe.a
$(CC) $(CFLAGS) -o $@ $< fhe.a $(LDLIBS)
您可以看到添加了fhe.a
库依赖项。