
我在 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 重新編譯以建立共用物件。不幸的是我不知道它丟失在哪裡......
事實上,這些似乎是他們的建置系統中的錯誤,您也許應該向上游報告它們。