код C ++, встроенный в общую библиотеку для HELib, использует статическую библиотеку NTL и GMP. Но он получает следующую ошибку:
/ usr / bin / ld: /usr/local/lib/libntl.a(FFT.o): перемещение R_X86_64_32 против `.rodata.str1.8 'нельзя использовать при создании общего объекта; перекомпилировать с -fPIC
/usr/local/lib/libntl.a: ошибка при добавлении символов: неверное значение
collect2: ошибка: ld вернул 1 статус выхода
Это было предложено в сообщении Нажмите здесь
для перекомпиляции NTL и GMP с флагами "-fPIC".
Я не могу найти, как мне это сделать.
Редактировать:
Теперь я могу собрать общую библиотеку после:
перекомпиляция GMP и NTL:
./configure --enable-shared
для gmp и
./configure SHARED=on
После выполнения установки HELib. Я получаю сообщение об ошибке при запуске кода примеров.
Ссылка на Makefile: нажмите, чтобы увидеть makefile
Ошибка:
g ++ -g -O2 -std = c ++ 11 -pthread -DFHE_THREADS -DFHE_BOOT_THREADS -DFHE_DCRT_THREADS -o Test_General_x Test_General.cpp -L / usr / local / lib -lntl -lgmplm
/usr/local/lib/libfhe.so: неопределенная ссылка на write_raw_int(std::ostream&, long, long)'
/usr/local/lib/libfhe.so: undefined reference to
read_raw_ZZ (std :: istream &, NTL :: ZZ &) '
/usr/local/lib/libfhe.so: неопределенная ссылка на void write_raw_vector<long>(std::ostream&, std::vector<long, std::allocator<long> > const&)'
/usr/local/lib/libfhe.so: undefined reference to
writeEyeCatcher (std :: ostream &, char const *) '
/usr/local/lib/libfhe.so: неопределенная ссылка на write_raw_xdouble(std::ostream&, NTL::xdouble)'
/usr/local/lib/libfhe.so: undefined reference to
read_ntl_vec_long (std :: istream &, NTL :: Vec &) '
/usr/local/lib/libfhe.so: неопределенная ссылка на void read_raw_vector<long>(std::istream&, std::vector<long, std::allocator<long> >&)'
/usr/local/lib/libfhe.so: undefined reference to
readEyeCatcher (std :: istream &, char const *) '
/usr/local/lib/libfhe.so: неопределенная ссылка на read_raw_int(std::istream&, long)'
/usr/local/lib/libfhe.so: undefined reference to
read_raw_xdouble (std :: istream &) '
/usr/local/lib/libfhe.so: неопределенная ссылка на write_raw_ZZ(std::ostream&, NTL::ZZ const&)'
/usr/local/lib/libfhe.so: undefined reference to
write_ntl_vec_long (std :: ostream &, NTL :: Vec const &, long) '
collect2: error: ld вернул 1 состояние выхода
Makefile: 179: рецепт для цели 'Test_General_x' не удался
make: *** [Test_General_x] Ошибка 1