c - 对 sqrt 的 undefined reference

标签 c makefile sqrt

我已将 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/

相关文章:

C:捕获空输入并打印命令提示符

c - 理解数组和函数

c++ - 使用 qmake 查找编译器供应商/版本

c - makefile 简化

Java 数学开方源代码

c - 在 C 中使用递归对数组进行二进制搜索

c++ - 如何将 "jni/*.c/cpp"文件添加到 CMakeLists.txt 文件?

makefile - 尝试制作 Mosh 源代码时 Protocol Buffer 版本错误

assembly - ARM frsqrts 是否需要与额外的 fmul 指令一起使用以进行牛顿迭代?

android - 接近 2D 位置