使用数学库make命令

时间:2013-12-06 17:52:57

标签: makefile ldflags

我需要为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

1 个答案:

答案 0 :(得分:0)

为什么你的makefile引用了不存在的各种变量,比如LOADLIBESC_LIB?为什么要设置从不使用的变量,例如LDLIBS

它不起作用的原因是你将库引用放在LDFLAGS变量中,该变量在你的任何目标文件之前的link命令中提前出现。因此,当链接器在数学库中进行链接时,它认为它不需要它,因为还没有使用它。

您必须将库放在链接行的 end

由于您已经在最后使用了C_LIB变量,所以如果添加:

C_LIB = -lm

然后它应该工作。