
У меня возникли проблемы при компиляции библиотеки (XSB Prolog) в Ubuntu.
Я настраиваю и компилирую его с помощью:
sudo ./configure -prefix=/usr/local/lib/
sudo ./makexsb
Затем мне нужно выполнить следующую команду, чтобы сгенерировать определенные динамические библиотеки:
sudo ./makexsb dynmodule
Но это приводит к следующему сбою:
make -f ../config/x86_64-unknown-linux-gnu/topMakefile dynmodule
Preparing...
make[1]: Entering directory `/home/parallels/prologengines/XSB/emu'
Making XSB Shared Library /home/parallels/prologengines/XSB/config/x86_64-unknown-linux-gnu/bin/libxsb.so
gcc: error: unrecognized command line option ‘-faltivec’
make[1]: *** [xsbdynmod] Error 1
Насколько я понимаю, эта -faltivec
опция имеет смысл только при сборке на архитектуре PowerPC. Так что может быть, что правильная архитектура не определяется? Если это так, как я могу быть уверен, что архитектура определяется правильно?
решение1
Если посмотреть на build/emuMakefile.in
, который выводится config/x86_64-unknown-linux-gnu/emuMakefile
при запуске configure
скрипта, -faltivec
флаг жестко закодирован в строке 184, поэтому он не зависит от целевой архитектуры, следовательно, это не проблема определения архитектуры:
xsbdynmod::
@echo "Making XSB Shared Library $(bindir)/libxsb.$(SHAREDLIB_EXTENSION)"
@@LD@ -o libxsb.$(SHAREDLIB_EXTENSION) $(DYNMOD_LDFLAGS) -faltivec -fPIC $(XSBMOD_LDFLAGS) $(OBJS) ${ODBCOBJ} ${INTERPROLOGOBJ} -lm
@cp libxsb.$(SHAREDLIB_EXTENSION) $(bindir) 2>/dev/null || echo ""
Вы можете попробовать удалить его, чтобы снова настроить/скомпилировать, но вы также можете столкнуться с ошибкой, предлагающей вам перекомпилировать с -fPIC, чтобы создать общий объект. К сожалению, я не могу понять, где его не хватает…
На самом деле, похоже, это ошибки в их системе сборки, возможно, вам следует сообщить о них вышестоящей команде.