首页 > 解决方案 > 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

标签: cgccmakefile

解决方案


链接器不会链接libm,除非您在使用它的目标文件之后指定它。所以你需要改为

LDFLAGS = -lm

%: %.o 
     $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

推荐阅读