我是Linux操作系统的新手。我正在尝试运行从http://cbio.mskcc.org/leslielab/software/string_kernels.html下载的代码 然后我使用makefile编译./profkernel中的./src文件。 但是,当我运行make时,我收到以下错误: screenshot
makefile看起来像这样
# MITRA MakeFile
ifeq ($(MODE),debug)
#Debug flags
COMPFLAGS = -c -g -pg -Wall
CC = cc
CLIBS = -lm -g -pg
else
ifeq ($(MODE),memwatch)
#Memwatch flags
COMPFLAGS = -DMEMWATCH -DMW_STDIO -c -g -Wall -pg
CC = cc
CLIBS = -DMEMWATCH -DMW_STDIO -lm -g -Wall -pg
else
#Efficient Flags
COMPFLAGS = -c -O3
CC = cc
CLIBS = -lm -O3
endif
endif
INCLUDES = HashTable.h mitra.h MiscUtil.h SymbolTable.h SymbolTable.h Globals.h Input.h
string-kernel : string-kernel.o HashTable.o MiscUtil.o SymbolTable.o Globals.o Input.o memwatch.o
${CC} ${CLIBS} -o string-kernel string-kernel.o HashTable.o MiscUtil.o SymbolTable.o Globals.o Input.o memwatch.o
%.o : %.c
${CC} ${COMPFLAGS} $< -o $@
TAGS :
etags *.c *.h
clean :
rm string-kernel *.o
我注意到有类似的问题。我试图从那些答案中添加相同的单词,如
LDFLAGS=-lm or LDLIBS=-lm
但它不起作用。 有人知道吗?非常感谢
答案 0 :(得分:0)
-l
选项(在此Makefile中位于${CLIBS}
中)应位于使用它们的目标文件之后,而不是之前。否则,链接将因使用静态库而失败,或者在此情况下,链接器默认启用--as-needed
时(例如在Ubuntu中)。所以
${CC} -o string-kernel string-kernel.o HashTable.o MiscUtil.o SymbolTable.o Globals.o Input.o memwatch.o ${CLIBS}