
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 ""
もう一度 configure/compile から削除してみることもできますが、共有オブジェクトを作成するために -fPIC で再コンパイルするように勧めるエラーが発生する可能性もあります。残念ながら、どこにそれが欠けているのかわかりません…
実際、これらはビルド システムのバグであると思われるので、アップストリームに報告する必要があるかもしれません。