gpt4 book ai didi

c - "make clean"导致 "make all"失败

转载 作者:太空宇宙 更新时间:2023-11-04 05:27:26 26 4
gpt4 key购买 nike

当我在没有清理的情况下执行这个 Makefile 时,它​​运行正常并且共享库和主要可执行文件都被正确创建。但是,当我添加 clean 目标时,“make all”失败。可能是什么原因?

CC = gcc
CFLAGS = -fPIC -Wall -Werror
LDFLAGS = -shared

TARGET_LIB= libnsd.so

lib: nsd.o nd.o
$(CC) $(LDFLAGS) -o ${TARGET_LIB} nsd.o nd.o -lm

nd.o : nd.c nd.h
$(CC) -c $(CFLAGS) nd.c

nsd.o : nsd.c nsd.h
$(CC) -c $(CFLAGS) nsd.c

all: main.c
$(CC) -o -I. -L. main.c -lnsd

clean:
rm -f libnsd.so nd.o nsd.o

最佳答案

您的 all: 目标需要依赖于 lib 目标,因此首先构建库。

编译器的 -o 参数还需要一个它应该创建的可执行文件的名称。

all: lib main.c
$(CC) -o main -I. -L. main.c -lnsd

通常您希望目标名称是您创建的文件,否则在不需要时会重建。 (lib: 目标有同样的问题)但作为可执行文件的一个例子:

.PHONY: all
all: lib main

main: lib main.c
$(CC) -o main -I. -L. main.c -lnsd

关于c - "make clean"导致 "make all"失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084079/

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