未定义的sqrt引用

时间:2017-02-02 06:25:26

标签: c makefile sqrt

我已将math.h 1.cLDLIBS=-lm中的makefile包括在内。

1.c和2.c是当前目录中的一些文件。

制作文件如下:

dINES+=PROJECT_CONF_H=\"project-conf.h\"
CONTIKI_PROJECT = 1 2
all: $(CONTIKI_PROJECT)

CONTIKI = ../..

WITH_UIP6=1
UIP_CONF_IPV6=1

CFLAGS+= -DUIP_CONF_IPV6_RPL -DUIP_CONF_IPV6 -DWITH_UIP6
LDLIBS=-lm
ifdef PERIOD
CFLAGS=-DPERIOD=$(PERIOD)
endif    

include $(CONTIKI)/Makefile.include

我已阅读相关的stackoverflow问题和答案,但无法理解为什么Undefined reference to sqrt

1 个答案:

答案 0 :(得分:1)

首先,请注意include $(CONTIKI)/Makefile.include可能会取消您上面所做的任何设置。所以我们无法调试你的问题。

然后,运行make -p一次以了解内置规则(假设您正在使用GNU make)。请务必阅读documentation of make。同时运行make --trace和/或使用remake(例如remake -x)来调试Makefile

请注意gcc的程序参数顺序很重要。请先阅读gcc文档的Invoking GCC章节。您希望使用可能添加到-Wall -g行的CFLAGS+=(以获取所有警告和调试信息)进行编译。也许您的CFLAGS=-DPERIOD=$(PERIOD)行应为CFLAGS+= -DPERIOD=$(PERIOD)

也许您的LDLIBS=-lm行应为LIBES= -lm

Undefined reference: sqrt消息可能是因为您的编译命令(由make运行)缺少-lm或订单错误。