【问题标题】:Makefile: undefined reference to acos [closed]Makefile:对acos的未定义引用[关闭]
【发布时间】:2020-08-05 02:35:31
【问题描述】:

我已经对这个问题进行了一些研究,并将 -lm 包含在我的标签列表的末尾,但我不断收到对 ____ 的未定义引用,其中包含 cos 和 sin 等几个数学函数。 编辑:我包括 ,,

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

【问题讨论】:

  • 如果您发布代码会有所帮助。
  • 也许你忘记在源文件中包含
  • 我在所有文件中都包含了
  • 欢迎来到 Stack Overflow。我们要求“为什么此代码不起作用” 形式的问题包含minimal complete example。这不仅仅是为了我们的利益;这是一项重要的编码技能。
  • 这能回答你的问题吗? Why do you need an explicit `-lm` compiler option

标签: c gcc makefile


【解决方案1】:

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

LDFLAGS = -lm

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

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多