我在 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/emuMakefile
configure
-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 重新编译以创建共享对象。不幸的是,我不知道它在哪里丢失了……
事实上,这些似乎是他们构建系统中的错误,也许你应该向上游报告它们。