未定义的 sqrt 引用
Undefined reference to sqrt
我在 1.c
中包含了 math.h
,在 makefile
中包含了 LDLIBS=-lm
。
1.c 和 2.c 是当前目录中的一些文件。
Make文件如下:
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
我已经阅读了相关的 Whosebug 问题和答案,但无法理解为什么 Undefined reference to sqrt
。
首先,请注意 include $(CONTIKI)/Makefile.include
可以取消您在上面所做的任何设置。所以我们无法调试您的问题。
然后,运行 make -p
一次了解内置规则(假设您正在使用 GNU make). Be sure to read documentation of make
. Run also make --trace
and/or use remake(例如 remake -x
)调试您的 Makefile
.
请注意 gcc
的程序参数顺序非常重要。首先阅读 gcc
文档的 Invoking GCC 章节。您想要使用 -Wall -g
进行编译(以获取所有警告和调试信息),这可能会添加到您的 CFLAGS+=
行中。也许你的
CFLAGS=-DPERIOD=$(PERIOD)
行应该是 CFLAGS+= -DPERIOD=$(PERIOD)
也许你的 LDLIBS=-lm
行应该是 LIBES= -lm
.
Undefined reference: sqrt
消息可能是因为您的编译命令(运行 by make
)缺少 -lm
或顺序错误。
我在 1.c
中包含了 math.h
,在 makefile
中包含了 LDLIBS=-lm
。
1.c 和 2.c 是当前目录中的一些文件。
Make文件如下:
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
我已经阅读了相关的 Whosebug 问题和答案,但无法理解为什么 Undefined reference to sqrt
。
首先,请注意 include $(CONTIKI)/Makefile.include
可以取消您在上面所做的任何设置。所以我们无法调试您的问题。
然后,运行 make -p
一次了解内置规则(假设您正在使用 GNU make). Be sure to read documentation of make
. Run also make --trace
and/or use remake(例如 remake -x
)调试您的 Makefile
.
请注意 gcc
的程序参数顺序非常重要。首先阅读 gcc
文档的 Invoking GCC 章节。您想要使用 -Wall -g
进行编译(以获取所有警告和调试信息),这可能会添加到您的 CFLAGS+=
行中。也许你的
CFLAGS=-DPERIOD=$(PERIOD)
行应该是 CFLAGS+= -DPERIOD=$(PERIOD)
也许你的 LDLIBS=-lm
行应该是 LIBES= -lm
.
Undefined reference: sqrt
消息可能是因为您的编译命令(运行 by make
)缺少 -lm
或顺序错误。