我把math.h收录在1.c中,LDLIBS=-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我读过相关的堆叠溢出问题和答案,但无法理解为什么Undefined reference to sqrt。
发布于 2017-02-02 06:31:13
首先,请注意,include $(CONTIKI)/Makefile.include可以取消您在上面设置的任何设置。所以我们不能调试您的问题。
然后,运行make -p一次以了解内置规则(假设您使用的是GNU制造)。一定要阅读make。还可以运行make --trace和/或使用重做 (例如,作为remake -x)调试Makefile。
请注意,gcc的程序参数顺序非常重要。首先阅读援引GCC文档的gcc章节。您希望使用-Wall -g (获取所有警告和调试信息)进行编译,这些警告和调试信息可能会添加到CFLAGS+=行中。也许你的
CFLAGS=-DPERIOD=$(PERIOD)行应该是CFLAGS+= -DPERIOD=$(PERIOD)
也许您的LDLIBS=-lm行应该是LIBES= -lm。
Undefined reference: sqrt消息可能是因为您的编译命令(由make运行)缺少-lm或顺序错误。
https://stackoverflow.com/questions/41995511
复制相似问题