gpt4 book ai didi

c - makefile 包含 math.h 时出现问题

转载 作者:行者123 更新时间:2023-11-30 16:48:58 24 4
gpt4 key购买 nike

在我的项目中,我需要使用 math.h 库。因此,在我的 makefile 中,我将 -lm 添加到相关文件中。这是行:

$(CC) $(CFLAGS) -c fourmi.c -lm -o fourmi.o 

我用 gcc 编译,我的 CFLAGS 有 -Wall -ansi -std=c99我认为这是正确的,但当我编译时,我被告知:

undefined reference to pow/sqrt...

我知道很多帖子都谈到了这个问题,但没有一个对我有帮助。有人知道可能出了什么问题吗?

非常感谢!

最佳答案

从您的评论看来,您低估了 Makefile 的复杂性。

一个简单的例子:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main(void){
printf("The third root of 5 is about: %.20g\n",pow(5.0,1/3.0));
exit(EXIT_SUCCESS);
}

一个简单的,虽然不是最简单的Makefile,因为它可能是

# Just what I regularily use, YMMV, of course
CFLAGS += -O3 -g3 -W -Wall -Wextra -Wuninitialized -Wstrict-aliasing -std=c11
# Libmath
LIBS += -lm

# the executable is made from one or more object files
# if you have more, add them here
fourmi_executable: fourmi.o
$(CC) $(CFLAGS) fourmi.o -o fourmi $(LIBS)
# an object file is made from one sourcecode file)
# if you have more, add more of these constructs
fourmi.o: fourmi.c
$(CC) $(CFLAGS) -c fourmi.c

clean:
rm *.o
rm fourmi_executable

(不要忘记:空白插入是由一个制表符插入的,而不是空格!)

这个Makefile非常简单,不适合多个源文件或任何比编译成一个可执行文件更复杂的东西,但作为一个开始应该有用。

关于c - makefile 包含 math.h 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42769853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com