Pergunta

Estou tentando instalar o pacote de otimização SCIP versão 3.1.0

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

O software é compilado digitando o comando 'make' no diretório scipoptsuite-3.1.0.O pacote contém três pacotes constituintes (SCIP, soplex e zimpl).Existe um makefile para o pacote geral (scipoptsuite) e também um makefile para os três pacotes constituintes.Estou tendo grandes dificuldades na hora de compilar o zimpl.

O erro ocorre ao tentar compilar usando o código dentro do makefile zimpl.Há uma tentativa de gerar uma biblioteca e armazenar arquivos-objeto dentro dessa biblioteca.

Agora vou fornecer alguns dos códigos relevantes para o problema.

Aqui estão algumas definições principais:

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))

E aqui está o segmento principal do código que causa o erro:

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

O que gera a seguinte mensagem de erro:

** 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

Gostaria particularmente de chamar sua atenção para a seguinte linha nesse segmento de código:

ar: crs: No such file or directory

Não tenho muita certeza a que se refere o aspecto 'crs' dessa linha, ou mesmo por que algum erro é gerado.Qualquer ajuda sobre este assunto seria muito apreciada.Estou realmente perplexo neste momento.

Foi útil?

Solução

Mudar :

AR      =   ar cr
ARFLAGS =   

Para :

ARFLAGS += cs

E :

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

Para :

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

ar deve ser invocado assim (homem ar (1)):

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

Portanto, seus sinalizadores não podem estar no final da linha de comando se não estiverem marcados como tal, como -crs.

Também, make já defini $(AR) e $(ARFLAGS) para você, não há necessidade de especificá-lo novamente.

$ make -p | grep "^AR"
AR = ar
ARFLAGS = rv
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top