gpt4 book ai didi

makefile - 如何在 makefile 中使用 LDFLAGS

转载 作者:行者123 更新时间:2023-12-03 02:06:55 26 4
gpt4 key购买 nike

我是 Linux 操作系统新手。我正在尝试使用 makefile 编译 .c 文件。必须链接数学库。我的 makefile 如下所示:

CC=gcc
CFLAGS=-Wall -lm

all:client

.PHONY: clean
clean:
rm *~ *.o client

当我运行 make 时,出现以下错误:

"undefined reference to rint"

所以它无法链接数学库。

但是当我使用显式编译时

gcc client.c -lm -o client

编译成功。

那么我应该如何更改我的 makefile 才能使其正常工作。我已经尝试添加 LDFLAGS=-lm。但我遇到了同样的错误。

我还应该补充一点,当我运行 make 时,它会扩展为

gcc -Wall -lm client.c -o client

(请注意,当我在末尾显式运行 gcc 时,它会起作用)。

最佳答案

您的链接器 (ld) 显然不喜欢 make 排列 GCC 参数的顺序,因此您必须稍微更改一下 Makefile:

CC=gcc
CFLAGS=-Wall
LDFLAGS=-lm

.PHONY: all
all: client

.PHONY: clean
clean:
$(RM) *~ *.o client

OBJECTS=client.o
client: $(OBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) -o client $(LDFLAGS)

在定义客户端目标的行中,根据需要更改$(LDFLAGS)的顺序。

关于makefile - 如何在 makefile 中使用 LDFLAGS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13249610/

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