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