gpt4 book ai didi

gcc - Makefile对于C程序无法正常工作

转载 作者:行者123 更新时间:2023-12-02 10:46:20 25 4
gpt4 key购买 nike

我用以下结构完成了此Makefile:

BIN_FILES = array cliente servidor

CC = gcc


CCGLAGS = -Wall -g


all: CFLAGS=$(CCGLAGS)
all: $(BIN_FILES)
.PHONY : all

array.o: array.c array.h
$(CC) -c -Wall -fPIC array.c

cliente.o: cliente.c array.h
$(CC) -Wall -c cliente.c

cliente: cliente.o array.h
$(CC) -Wall -o cliente -ldl -lrt

servidor.o: servidor.c mensajes.h
$(CC) -Wall -c servidor.c -lrt -lpthread

servidor: servidor.o
$(CC) -o $@ servidor -lrt -lpthread

clean:
rm -f $(BIN_FILES) *.o

.SUFFIXES:
.PHONY : clean

但是,当我尝试执行它时,它仅适用于第一条规则。然后执行停止。我的最终目标是使每个规则都起作用,因为如果我分别执行每个规则,它将起作用:
gcc -c -Wall -fPIC array.c
gcc -fPIC -shared -o libarray.so array.o -lrt
gcc -Wall -o cliente cliente.c -ldl -lrt
gcc -Wall -o servidor servidor.c -lrt -lpthread

谢谢

编辑:
现在,我在应用@Jens修改时遇到以下错误:
make: *** No rule to make the objective 'array', necesary for 'all'. Stop.

最佳答案

cliente.o和servidor.o的目标应使用-c而不是-o,即您要编译为目标文件。

将头文件指定为 objective-c liente和servidor中的依赖项也没有意义。这些命令仅链接,但不编译文件。

servidor: servidor.o
$(CC) -o $@ servidor.o -lrt -lpthread

使用 -ldl编译为目标文件时,没有必要指定库选项 -c等。
cliente.o: cliente.c array.h
$(CC) -Wall -c cliente.c

关于gcc - Makefile对于C程序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562269/

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