문제

SCIP 최적화 제품군 버전 3.1.0을 설치하려고 합니다.

http://scip.zib.de/download.php?fname=scipoptsuite-3.1.0.tgz

소프트웨어는 scipopsuite-3.1.0 디렉토리에 'make' 명령을 입력하여 컴파일됩니다.패키지에는 세 가지 구성 패키지(SCIP, soplex 및 zimpl)가 포함되어 있습니다.일반 패키지(scipopsuite)에 대한 makefile과 세 가지 구성 패키지에 대한 makefile도 있습니다.zimpl을 컴파일하는 데 큰 어려움을 겪고 있습니다.

zimpl makefile 내의 코드를 사용하여 컴파일하려고 하면 오류가 발생합니다.라이브러리를 생성하고 해당 라이브러리 내에 개체 파일을 저장하려는 시도가 있습니다.

이제 문제에 대한 관련 코드 중 일부를 제공하겠습니다.

다음은 몇 가지 주요 정의입니다.

AR      =   ar cr
ARFLAGS     =   
RANLIB      =   ranlib


LIBBASE     =   blkmem.o bound.o code.o conname.o define.o elem.o entry.o \
            hash.o heap.o idxset.o inst.o iread.o list.o \
            load.o local.o metaio.o mmlparse2.o mmlscan.o mono.o \
            mshell.o prog.o random.o rdefpar.o source.o \
            setempty.o setpseudo.o setlist.o setrange.o setprod.o \
            setmulti.o set4.o stmt.o stkchk.o strstore2.o symbol.o \
            term2.o tuple.o vinst.o zimpllib.o
LIBDIR      =   lib
LIBRARY     =   $(LIBDIR)/lib$(LIBNAME).a
LIBNAME     =   $(NAME)-$(VERSION).$(BASE)

OBJDIR      =   obj/O.$(OSTYPE).$(ARCH).$(COMP).$(LINK).$(OPT)
LIBOBJ      =   $(LIBBASE) gmpmisc.o numbgmp.o
LIBXXX      =   $(addprefix $(OBJDIR)/,$(LIBOBJ))

오류를 일으키는 주요 코드 부분은 다음과 같습니다.

$(LIBRARY): $(OBJDIR) $(LIBDIR) $(LIBXXX) 
        @echo "-> generating library $@"
        -rm -f $(LIBRARY)
        $(AR) $@ $(LIBXXX) $(ARFLAGS) 
        $(RANLIB) $@

다음과 같은 오류 메시지가 생성됩니다.

** Building ZIMPL library "mypath/scipoptsuite-3.1.0/zimpl-3.3.2/lib/libzimpl.linux.arm.gnu.opt.a".
make[2]: Entering directory `mypath/scipoptsuite-3.1.0/zimpl-3.3.2'
-> generating library lib/libzimpl-3.3.2.linux.arm.gnu.opt.a
ar: crs: No such file or directory
make[2]: *** [lib/libzimpl-3.3.2.linux.arm.gnu.opt.a] Error 1
make[2]: Leaving directory `mypath/scipoptsuite-3.1.0/zimpl-3.3.2'
make[1]: *** [mypath/scipoptsuite-3.1.0/zimpl-3.3.2/lib/libzimpl.linux.arm.gnu.opt.a] Error 2
make[1]: Leaving directory `mypath/scipoptsuite-3.1.0'
make: *** [scipbinary] Error 2

특히 해당 코드 세그먼트 내의 다음 줄에 주의를 기울이고 싶습니다.

ar: crs: No such file or directory

해당 줄의 'crs' 측면이 무엇을 가리키는지, 심지어 왜 오류가 생성되는지 잘 모르겠습니다.이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.나는 이 시점에서 정말 당황스럽다.

도움이 되었습니까?

해결책

변화 :

AR      =   ar cr
ARFLAGS =   

에게 :

ARFLAGS += cs

그리고 :

$(AR) $@ $(LIBXXX) $(ARFLAGS)

에게 :

$(AR) $(ARFLAGS) $@ $(LIBXXX)

ar 다음과 같이 호출됩니다(남자 ar(1)):

ar [--plugin name] [-X32_64] [-]p[mod [relpos] [count]] [--target bfdname] archive [member...]

따라서 해당 플래그는 다음과 같이 표시되지 않은 경우 명령줄 끝에 있을 수 없습니다. -crs.

또한, make 이미 정의 $(AR) 그리고 $(ARFLAGS) 다시 지정할 필요가 없습니다.

$ make -p | grep "^AR"
AR = ar
ARFLAGS = rv
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top