带有 -Wall -pedantic 和 -lpthread 的 gcc makefile
gcc makefile with -Wall -pedantic and -lpthread
我已经尝试从模板制作 makefile,这就是我得到的:
CFLAGS = -Wall -pedantic
LFLAGS = -lpthread
CC = gcc
OBJS = bank5.o client2.o
PROGRAM = ex2
all: bank client
ex2: $(OBJS)
$(CC) $(LFLAGS) $(OBJS) -o $(PROGRAM)
bank: bank5.c
$(CC) $(CFLAGS) -c bank5.c receive_message.c send_message.c -o bank5
client: client2.c
$(CC) $(CFLAGS) -c client2.c receive_message.c send_message.c -o client2
当我尝试 运行 时,我得到了这个错误:
gcc -Wall -pedantic -c bank5.c receive_message.c send_message.c -o bank5
gcc: fatal error: cannot specify -o with -c, -S or -E with multiple files
compilation terminated.
make: *** [bank] Error 4
这是我的 makefile 在 -Wall 和 -pedantic 之前的样子,这个 运行 通常:
all: bank client
bank: bank5.c
gcc bank5.c receive_message.c send_message.c -o bank5 -lpthread
client: client2.c
gcc -o client2 client2.c send_message.c receive_message.c
-c
只会编译每个文件(即生成一个目标文件),而不是 link 一起编译它们。因为一个目标文件对应一个源文件,所以会创建多个目标文件。
-o
指定一个个输出文件。
显然,两者相互矛盾。
删除 -c
以解决问题。
无论如何,您的 makefile 看起来有问题。 ex2
在那里做什么? bank5.o
和 client2.o
未在任何地方创建。
我已经尝试从模板制作 makefile,这就是我得到的:
CFLAGS = -Wall -pedantic
LFLAGS = -lpthread
CC = gcc
OBJS = bank5.o client2.o
PROGRAM = ex2
all: bank client
ex2: $(OBJS)
$(CC) $(LFLAGS) $(OBJS) -o $(PROGRAM)
bank: bank5.c
$(CC) $(CFLAGS) -c bank5.c receive_message.c send_message.c -o bank5
client: client2.c
$(CC) $(CFLAGS) -c client2.c receive_message.c send_message.c -o client2
当我尝试 运行 时,我得到了这个错误:
gcc -Wall -pedantic -c bank5.c receive_message.c send_message.c -o bank5
gcc: fatal error: cannot specify -o with -c, -S or -E with multiple files
compilation terminated.
make: *** [bank] Error 4
这是我的 makefile 在 -Wall 和 -pedantic 之前的样子,这个 运行 通常:
all: bank client
bank: bank5.c
gcc bank5.c receive_message.c send_message.c -o bank5 -lpthread
client: client2.c
gcc -o client2 client2.c send_message.c receive_message.c
-c
只会编译每个文件(即生成一个目标文件),而不是 link 一起编译它们。因为一个目标文件对应一个源文件,所以会创建多个目标文件。-o
指定一个个输出文件。
显然,两者相互矛盾。
删除 -c
以解决问题。
无论如何,您的 makefile 看起来有问题。 ex2
在那里做什么? bank5.o
和 client2.o
未在任何地方创建。