我需要为makefile运行make命令。但是当我运行这个make命令时,我得到的错误是“未定义引用`log'”,因为我知道这个事实它不包含数学库,我们必须在运行时包含它。我知道如果我使用gcc comiler运行它,那么我最后可以写-lm,它将包括数学库。我的问题是我需要使用make命令来运行它,这就是生成lu。
在这个如果我写make lu -lm它不是连接数学库。请帮忙
使用此链接 How to use LDFLAGS in makefile 我更新了我的make文件,但仍然存在同样的问题。请帮助。
SHELL=/bin/sh
BENCHMARK=ep
BENCHMARKU=EP
include ../config/make.def
OBJS = ep.o ${COMMON}/c_print_results.o ${COMMON}/c_${RAND}.o \
${COMMON}/c_timers.o ${COMMON}/c_wtime.o
include ../sys/make.common
LDLIBS=-lm
LDFLAGS=-lm
${PROGRAM}: config ${OBJS}
${CLINK} ${CLINKFLAGS} -o ${PROGRAM} $(LDFLAGS) $(LOADLIBES) ${OBJS} ${C_LIB}
ep.o: ep.c npbparams.h
${CCOMPILE} ep.c
clean:
- rm -f *.o *~
- rm -f npbparams.h core
答案 0 :(得分:0)
为什么你的makefile引用了不存在的各种变量,比如LOADLIBES
,C_LIB
?为什么要设置从不使用的变量,例如LDLIBS
?
它不起作用的原因是你将库引用放在LDFLAGS
变量中,该变量在你的任何目标文件之前的link命令中提前出现。因此,当链接器在数学库中进行链接时,它认为它不需要它,因为还没有使用它。
您必须将库放在链接行的 end 。
由于您已经在最后使用了C_LIB
变量,所以如果添加:
C_LIB = -lm
然后它应该工作。