2016-03-26 55 views
0

我是Linux OS新手。我試圖運行從http://cbio.mskcc.org/leslielab/software/string_kernels.html 下載的代碼然後使用makefile編譯./profkernel中的./src文件。 然而,當我運行make,我得到以下錯誤: screenshot使用make命令未定義的日誌引用

而生成文件看起來像這樣

# 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 [email protected] 

TAGS : 
    etags *.c *.h 

clean : 
    rm string-kernel *.o 

我注意到有類似的問題。我試圖從那些答案中添加相同的詞,如

LDFLAGS=-lm or LDLIBS=-lm 

但它沒有工作。 有人知道嗎?非常感謝

+0

希望這已經回答只需添加'''CC = GCC CFLAGS = -Wall LDFLAGS = -lm'''檢查這個http://stackoverflow.com/questions/13249610/how-to -use -ldflags-in-makefile – Ankanna

+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}