AR: CRS: нет такого файла или каталога
Вопрос
Я пытаюсь установить Scip Optimization Suite версии 3.1.0
http://scip.zib.de/download. php? fname= sciptsuite-3.1.0.tgz
Программное обеспечение составлено, набрав команду «make 'в каталоге Sciptsuite-3.1.0. Пакет содержит три составляющих пакеты (SCIP, SOPLEX и ZIMPL). Существует Makefile для общего пакета (Scipotsuite), а также для трех составных пакетов. У меня большие трудности, когда речь идет о компиляции Zimpl.
Ошибка возникает при попытке компиляции с помощью кода в Makefile Zimpl. Есть попытка генерировать библиотеку и хранить объектные файлы в этой библиотеке.
Теперь я собираюсь предоставить некоторые соответствующие код проблемы.
Вот несколько ключевых определений:
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 =
.
to:
ARFLAGS += cs
.
и:
$(AR) $@ $(LIBXXX) $(ARFLAGS)
.
to:
$(AR) $(ARFLAGS) $@ $(LIBXXX)
.
ar
должен быть связан с таким ( Man 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
.