Проблемы компиляции библиотеки

У меня возникают трудности с компиляцией загруженных файлов (для академических целей). Я выполнил следующую команду:

cd tmp/Detri_2.6.a/detri

, затем создаю detri_new CC = gcc Чтобы создать библиотеку из соответствующих файлов и папок, извлеченных в /tmp.

Вывод выглядит следующим образом:

tmp/Detri_2.6.a/detri$ make detri_new CC=gcc
g++     Makefile.cpp   -o Makefile

Makefile.cpp:16:25: error: expected unqualified-id before ‘-’ token
Makefile.cpp:16:38: error: expected unqualified-id before ‘-’ token
Makefile.cpp:17:1: error: ‘LIBS’ does not name a type
Makefile.cpp:20:1: error: ‘MODULES’ does not name a type
[..]
Makefile.cpp:65:73: error: expected unqualified-id before ‘-’ token
Makefile.cpp:68:1: error: expected unqualified-id before ‘.’ token
Makefile.cpp:68:19: error: ‘$’ does not name a type
Makefile.cpp:68:60: error: expected unqualified-id before ‘-’ token
Makefile.cpp:71:10: error: ‘$’ does not name a type
Makefile.cpp:71:20: error: expected unqualified-id before ‘-’ token
Makefile.cpp:71:31: error: expected unqualified-id before ‘--’ token
Makefile.cpp:71:43: error: ‘$’ does not name a type
make: *** [Makefile] Error 1

>

Я не написал makefile.cpp (имейте в виду, что это моя первая неделя использования Ubuntu и выполнения этого вроде того), но ранее компилятор пытался собрать и найти ошибку в файле makefile.tmp, а не в файле .cpp. Теперь, как показывает выходной файл, он не подходит к концу попытки прочитать файл .cpp.

Я немного потерян здесь ...

Спасибо

ОБНОВЛЕНИЕ: Я попробовал то, что было предложено в комментарии ниже, то есть: make -k TMPMK = Makefile.tmp detri_new CC = gcc

Тем не менее, у меня все еще есть те же (окно заполнено) ошибки вывода плюс некоторые новые.

Если это поможет, код был получен со следующего сайта

РЕДАКТИРОВАТЬ: Сокращенный раздел вывода ошибок и более четкое объяснение проблемы.

Вот файл makefile:

/* detri/Makefile.cpp --- C pre-processor Makefile for detri. */

/* USAGE: cpp -P ${CPPMK} > ${TMPMK}; make -k TMPMK=${TMPMK} -f ${TMPMK} ... */

/* Targets.  (CHANGE THIS ACCORDING TO YOUR NEEDS!) */
DEST=    ../bin
LIB=     ../lib
INCLUDE= ../include

/* Paramters: DEPEND, SHELL, CC, CPP, CPPMK, TMPMK, COPT. */
/* System specifics: CCFLAGS, AR, RANLIB, MALLOC. */
#include "Makefile.sys"

/* Other libraries. */
INCLS= -I${INCLUDE}
LIBRARIES= -l_sos${DBX} -l_lia${DBX} -l_basic${DBX}
LIBS= -L${LIB}

/* Source and object files. */
MODULES= detri.c delaunay.c flip.c prep.c \
         dt.c print_dt.c search.c trist.c peel.c
H_FILES= detri.h dt.h trist.h
OBJECTS= ${MODULES:.c=.o}

/* Interface. */
normal: detri;  @echo "Detri ready."
debug:  ;       ${MAKE} -k -f ${TMPMK} detri COPT="-D__DEBUG__" DBX=-g
remove: ;       rm -f ${OBJECTS}
all:    normal;

/* BEGIN Meta Interface: make detri_new */
/* Note: This is here so that we can package Detri stand-alone,
   without the alpha shape software and it's top-level Makefile. */

BASIC= ../basic
LIA=   ../lia
SOS=   ../sos
DETRI= ./

HD=echo "\n\n*** X ***\n"
MK= ${MAKE} -k CC="${CC}" CPP="${CPP}" COPT="${COPT}"

detri_new:;   ${MK} check soslibs_           detri_
detri_debug:; ${MK} check soslibs_d          detri_d
detri_all:;   ${MK} check soslibs_d soslibs_ detri_
soslibs_:  basic_ lia_ sos_
detri_:;  @/bin/csh -cf '${HD:X=Detri}; cd ${DETRI}; ${MK} new'
sos_:;    @/bin/csh -cf '${HD:X=SoS};   cd ${SOS};   ${MK} new'
lia_:;    @/bin/csh -cf '${HD:X=Lia};   cd ${LIA};   ${MK} new'
basic_:;  @/bin/csh -cf '${HD:X=Basic}; cd ${BASIC}; ${MK} new'
soslibs_d: basic_d lia_d sos_d
detri_d:; @/bin/csh -cf '${HD:X=Detri}; cd ${DETRI}; ${MK} clear debug'
sos_d:;   @/bin/csh -cf '${HD:X=SoS};   cd ${SOS};   ${MK} clear debug'
lia_d:;   @/bin/csh -cf '${HD:X=Lia};   cd ${LIA};   ${MK} clear debug'
basic_d:; @/bin/csh -cf '${HD:X=Basic}; cd ${BASIC}; ${MK} clear debug'
check:;   @/bin/csh -cf '           \
  echo Checking for target dirs;     \
  if (! -e ${DEST})    mkdir ${DEST}; \
  if (! -e ${LIB})     mkdir ${LIB};   \
  if (! -e ${INCLUDE}) mkdir ${INCLUDE} \
'

/* Internal rules. */
detri: ${OBJECTS}; ${CC} ${CCFLAGS} ${DBX} ${COPT} ${OBJECTS} \
                        -o ${DEST}/detri ${LIBS} ${LIBRARIES} ${MALLOC} -lm;

/* Generic rule to compile source files. */
.c.o: ${H_FILES}; ${CC} ${CCFLAGS} ${DBX} ${COPT} ${INCLS} -c $*.c -o $*.o

/* To compute dependencies with "make depend" ... */
depend:; ${DEPEND} -f${TMPMK} -- ${INCLS} ${MODULES}
0
задан 22 November 2012 в 19:23

1 ответ

Насколько я вижу, этот Makefile.cpp используется для генерации Makfeile с использованием препроцессора Си. Как вы можете видеть в Makefile.cpp, есть строка:

/* USAGE: cpp -P ${CPPMK} > ${TMPMK}; make -k TMPMK=${TMPMK} -f ${TMPMK} ... */

Это означает, что вы должны запустить препроцессор C (cpp), чтобы получить настоящий Makefile. Набрав cpp -P Makefile.cpp > Makefile.tmp, вы сгенерируете Makefile.tmp на основе Makefile.cpp. Согласно этому комментарию об использовании, вы должны передать этот сгенерированный Makefile.tmp в качестве значения для переменной TMPMK, например, make -k TMPMK=Makefile.tmp detri_new CC=gcc. Надеюсь, это поможет.

0
ответ дан 22 November 2012 в 19:23

Другие вопросы по тегам:

Похожие вопросы: