编译器无法识别架构

编译器无法识别架构

我在 Ubuntu 中编译库(XSB Prolog)时遇到了问题。

我正在使用以下命令进行配置和编译:

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产生的,该标志在第 184 行被硬编码,所以它不依赖于目标体系结构,因此它不是体系结构检测的问题:config/x86_64-unknown-linux-gnu/emuMakefileconfigure-faltivec

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 重新编译以创建共享对象。不幸的是,我不知道它在哪里丢失了……

事实上,这些似乎是他们构建系统中的错误,也许你应该向上游报告它们。

相关内容