
Ich habe Probleme beim Kompilieren einer Bibliothek (XSB Prolog) in Ubuntu.
Ich konfiguriere und kompiliere es mit:
sudo ./configure -prefix=/usr/local/lib/
sudo ./makexsb
Dann muss ich den folgenden Befehl ausführen, um bestimmte dynamische Bibliotheken zu generieren:
sudo ./makexsb dynmodule
Es schlägt jedoch mit der folgenden Ausgabe fehl:
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
Soweit ich weiß, -faltivec
ist die Option nur beim Erstellen auf PowerPC-Architekturen sinnvoll. Es kann also sein, dass die richtige Architektur nicht erkannt wird. Wenn das der Fall ist, wie kann ich sicher sein, dass die Architektur richtig erkannt wird?
Antwort1
Wenn man sich ansieht build/emuMakefile.in
, was config/x86_64-unknown-linux-gnu/emuMakefile
beim Ausführen configure
des Skripts erzeugt wird, ist das -faltivec
Flag in Zeile 184 fest codiert, es hängt also nicht von der Zielarchitektur ab und stellt somit kein Problem der Architekturerkennung dar:
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 ""
Sie können versuchen, es zu entfernen, indem Sie es erneut konfigurieren/kompilieren, aber möglicherweise wird auch ein Fehler angezeigt, der Ihnen vorschlägt, mit -fPIC neu zu kompilieren, um ein gemeinsames Objekt zu erstellen. Leider kann ich nicht herausfinden, wo es fehlt …
Tatsächlich scheinen dies Fehler in ihrem Build-System zu sein. Sie sollten sie möglicherweise Upstream melden.