使用make命令对未记录的日志引用

时间:2016-03-26 10:16:03

标签: linux makefile

我是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

但它不起作用。 有人知道吗?非常感谢

1 个答案:

答案 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}