Question

Je suis en train d'installer le SCIP optimisation de la suite de la version 3.1.0

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

Le logiciel est compilé en tapant le "faire" de commande dans le scipoptsuite-3.1.0 répertoire.Le paquet contient trois paquets (SCIP, soplex et zimpl).Il y a un makefile pour le régime général (scipoptsuite) et aussi un makefile pour les trois constituent des paquets.Je suis, de grandes difficultés quand il s'agit de la compilation de zimpl.

L'erreur se produit lorsque vous tentez de compiler à l'aide du code à l'intérieur de la zimpl makefile.Il y a une tentative de générer une bibliothèque et pour stocker les fichiers de l'objet à l'intérieur de la bibliothèque.

Je vais maintenant vous fournir une partie du code correspondant au problème.

Voici quelques définitions:

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

Et c'est là la clé du segment de code qui provoque l'erreur:

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

Qui génère le message d'erreur suivant:

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

Je tiens tout particulièrement à attirer votre attention sur la ligne suivante dans le segment de code:

ar: crs: No such file or directory

Je ne suis pas vraiment sûr de ce que le " sir " aspect de la ligne de référence, ou même pourquoi toute erreur est généré à tous.Toute aide serait grandement appréciée.Je suis vraiment perplexe sur ce point.

Était-ce utile?

La solution

Changement :

AR      =   ar cr
ARFLAGS =   

Pour :

ARFLAGS += cs

Et :

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

Pour :

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

ar peut être invoquée comme ceci (l'homme ar(1)):

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

Ainsi, ses drapeaux ne peut pas être à la fin de la ligne de commande si pas marqué en tant que tel, comme -crs.

Aussi, make déjà définir $(AR) et $(ARFLAGS) pour vous, il n'est pas nécessaire pour vous de le préciser à nouveau.

$ make -p | grep "^AR"
AR = ar
ARFLAGS = rv
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top