
Estou tendo problemas para compilar uma biblioteca (XSB Prolog) no Ubuntu.
Estou configurando e compilando com:
sudo ./configure -prefix=/usr/local/lib/
sudo ./makexsb
Então, preciso executar o seguinte comando para gerar determinadas bibliotecas dinâmicas:
sudo ./makexsb dynmodule
Mas está falhando com a seguinte saída:
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
Pelo que entendi, a -faltivec
opção só faz sentido ao construir em arquiteturas PowerPC. Então pode ser que a arquitetura correta não esteja sendo detectada? Se for esse o caso, como posso ter certeza de que a arquitetura foi detectada corretamente?
Responder1
Olhando para build/emuMakefile.in
, que produz config/x86_64-unknown-linux-gnu/emuMakefile
ao executar configure
o script, o -faltivec
sinalizador é codificado na linha 184, portanto não depende da arquitetura de destino, portanto não é um problema de detecção de arquitetura:
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 ""
Você pode tentar removê-lo da configuração/compilação novamente, mas também pode encontrar um erro sugerindo que você recompile com -fPIC para criar um objeto compartilhado. Infelizmente não consigo descobrir onde está faltando…
Na verdade, esses parecem ser bugs de seu sistema de compilação, talvez você deva reportá-los ao upstream.