我有一个包含4个源文件的项目: RTP.c,RTCP.c RTSP.c main.c 和3个头文件: RTP.h RTCP.h RTSP.h 我必须在主文件中包含所有头文件,在RTP.c中包含RTCP.h后,我将头文件包含在源文件中,我将它们链接到make文件中,请帮助我理解问题。 RTP.c
#include "RTP.h"
#include "RTCP.h"
RTCP.c
#include "RTCP.h"
RTSP.c
#include "RTSP.h"
main.c
#include "RTP.h"
#include "RTSP.h"
make文件:
OBJS = main.o RTPfunctions.o RTCPfunctions.o RTSPfunctions.o
CC = gcc
CCFLAGS = -g
Client : $(OBJS)
$(CC) $(OBJS) -o -pthread client
RTCPfunctions.o : RTCPfunctions.c RTCPfunctions.h
$(CC) -c -g -pthread RTCPfunctions.c
RTSPfunctions.o : RTSPfunctions.c RTSPfunctions.h
$(CC) -c -g -pthread RTSPfunctions.c
RTPfunctions.o : RTPfunctions.c RTPfunctions.h RTCPfunctions.h
$(CC) -c -g -o -pthread RTPfunctions.c RTCPfunctions.o
main.o : main.c RTPfunctions.h RTSPfunctions.h
$(CC) -c -g -o -pthread main.c RTPfunctions.o RTSPfunctions.o
clean:
\rm *.o *~ client
答案 0 :(得分:0)
你的问题不是很冗长,但是,根据online gcc manual,我们可以说,快速浏览你的makefile,
-o file
将输出放在文件
file
中。这适用于生成的任何类型的输出,无论是可执行文件,目标文件,汇编程序文件还是预处理的C代码。
基本上,这就是说,-o
的immidiate next参数应该是输出文件名。
另外,要关注order of linking,pthread
库应放在最后,例如
$(CC) $(OBJS) -o client -pthread