c - Makefile:未定义对 acos 的引用
问题描述
我已经对这个问题进行了一些研究,并将 -lm 包含在我的标签列表的末尾,但我不断收到对 ____ 的未定义引用,其中包含 cos 和 sin 等几个数学函数。编辑:我包括 <math.h>,<stdlib.h>,<stdio.h>
CFLAGS= -std=gnu18 -Wall -Wextra -Who-unused -pedantic -g -03 -lm
CC=gcc
PROGRAMS=main
LIBS=libct.a
OBJECTS= mex.o count.o id.o orag.o
all: $(PROGRAMS) $(LIBS)
libct.a: $(OBJECTS)
ar rcs $@ $^
main: main.o $(OBJECTS)
%.o: %.c
$$(CC) $(CFLAGS) -c -o $@ $<
%: %.o
$$(CC) $(CFLAGS) -o $@ $^
.PHONY:clean_objects clean all
clean_objects:
rm -f *.o
clean:
rm -f $(PROGRAMS) $(LIBS) *.o
解决方案
链接器不会链接libm
,除非您在使用它的目标文件之后指定它。所以你需要改为
LDFLAGS = -lm
和
%: %.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
推荐阅读
- git - git log --reflog vs git reflog
- c - 试图在 int 变量中存储无效的十六进制数
- android - React-Native Native UI 组件不调整大小(Android)
- c++ - 图 BFS 遍历 - C++
- c - 如何从结构数组中获取所有元素,并将它们添加到 c 中的字符串中?
- angular - 从变量 Angular 9 渲染组件
- javascript - 如何以不同的方式处理异步需求?
- python - 将 Pandas 数据帧保存到 csv 时更改浮动值的原因
- python - 如何腌制抓取数据而不是打印数据?
- node.js - "type": "module" in package.json throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath)