Pregunta

Estoy intentando instalar la versión 3.1.0 del paquete de optimización SCIP.

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

El software se compila escribiendo el comando 'make' en el directorio scipoptsuite-3.1.0.El paquete contiene tres paquetes constituyentes (SCIP, soplex y zimpl).Hay un archivo MAKE para el paquete general (scipoptsuite) y también un archivo MAKE para los tres paquetes constituyentes.Estoy teniendo grandes dificultades a la hora de compilar zimpl.

El error ocurre al intentar compilar usando el código dentro del archivo MAKE zimpl.Se intenta generar una biblioteca y almacenar archivos objeto dentro de esa biblioteca.

Ahora voy a proporcionar parte del código relevante para el problema.

Aquí hay algunas definiciones clave:

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

Y aquí está el segmento clave de código que causa el error:

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

Lo que genera el siguiente mensaje de error:

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

En particular, me gustaría llamar su atención sobre la siguiente línea dentro de ese segmento de código:

ar: crs: No such file or directory

No estoy realmente seguro de a qué se refiere el aspecto 'crs' de esa línea, ni siquiera de por qué se genera algún error.Cualquier ayuda en este asunto sería muy apreciada.Estoy realmente perplejo en este punto.

¿Fue útil?

Solución

Cambiar :

AR      =   ar cr
ARFLAGS =   

A :

ARFLAGS += cs

Y :

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

A :

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

ar debe ser invocado así (hombre ar(1)):

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

Entonces sus banderas no pueden estar al final de la línea de comando si no están marcadas como tales, como -crs.

También, make ya defino $(AR) y $(ARFLAGS) para usted, no es necesario que lo vuelva a especificar.

$ make -p | grep "^AR"
AR = ar
ARFLAGS = rv
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top