Domanda

Sto cercando di installare la versione Scip Optimization Suite versione 3.1.0

http://scip.zib.de/download. PHP? FNAME= SCIPOPTSUITE-3.1.0.tgz

Il software è compilato digitando il comando 'Make' nella directory ScipoptSuite-3.1.0. Il pacchetto contiene tre pacchetti costituenti (Scip, Soplex e Zimpl). C'è un makefile per il pacchetto generale (ScipoptSuite) e anche un makefile per i tre pacchetti costituenti. Sto avendo grandi difficoltà quando si tratta della compilazione di Zimpl.

L'errore si verifica quando si tenta di compilare utilizzando il codice all'interno del Makefile ZIMPL. C'è un tentativo di generare una libreria e archiviare i file di oggetti all'interno di quella libreria.

Ora fornirò parte del codice pertinente al problema.

Ecco alcune definizioni chiave:

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

ed ecco il segmento chiave del codice che causa l'errore:

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

che genera il seguente messaggio di errore:

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

Vorrei in particolare riportare la vostra attenzione alla seguente riga all'interno di quel segmento del codice:

ar: crs: No such file or directory
.

Non sono proprio sicuro di cosa si riferisca l'aspetto "CRS" di quella linea, o anche perché qualsiasi errore viene generato affatto. Qualsiasi aiuto su questo argomento sarebbe molto apprezzato. Sono veramente scatenato a questo punto.

È stato utile?

Soluzione

Modifica:

AR      =   ar cr
ARFLAGS =   
.

A:

ARFLAGS += cs
.

e:

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

A:

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


.

ar deve essere invocato come questo ( man ar (1) ): .

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

Quindi le sue bandiere non possono essere alla fine della riga di comando se non contrassegnata come tale, come -crs.

Inoltre, make ha già definito $(AR) e $(ARFLAGS) per te, non è necessario specificarlo di nuovo.

$ make -p | grep "^AR"
AR = ar
ARFLAGS = rv
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top