我已将 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
我已阅读相关的 stackoverflow 问题和答案,但无法理解为什么未定义对 sqrt 的引用
。
最佳答案
首先,请注意 include $(CONTIKI)/Makefile.include
可能会取消您在上面所做的任何设置。因此我们无法调试您的问题。
然后,运行一次 make -p
以了解内置规则(假设您正在使用 GNU make )。请务必阅读documentation of make
。还运行 make --trace
和/或使用 remake (例如 remake -x
)来调试 Makefile
。
请注意,gcc
的程序参数顺序非常重要。首先阅读Invoking GCC gcc
文档的章节。您想要使用 -Wall -g
进行编译(以获取所有警告和调试信息),这可能会添加到您的 CFLAGS+=
行中。也许您的
CFLAGS=-DPERIOD=$(PERIOD)
行应该是 CFLAGS+= -DPERIOD=$(PERIOD)
也许您的LDLIBS=-lm
行应该是LIBES= -lm
。
undefined reference :sqrt
消息可能是因为您的编译命令(由make
运行)缺少-lm
或顺序错误.
关于c - 对 sqrt 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41995511/