У меня проблемы с компиляцией библиотеки (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 ответ1

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 для создания общего объекта. К сожалению, я не могу понять, где это не хватает ...

На самом деле, они кажутся ошибками в их системе сборки, поэтому вы должны сообщить об этом выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .