컴파일러가 아키텍처를 인식하지 못합니다.

컴파일러가 아키텍처를 인식하지 못합니다.

Ubuntu에서 라이브러리(XSB 프롤로그)를 컴파일하는 데 문제가 있습니다.

다음을 사용하여 구성하고 컴파일하고 있습니다.

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/emuMakefileconfigure-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를 사용하여 다시 컴파일하라는 오류가 발생할 수도 있습니다. 아쉽게도 어디가 없어졌는지 알 수가 없네요...

사실 이는 빌드 시스템의 버그인 것 같습니다. 업스트림으로 보고해야 할 수도 있습니다.

관련 정보