#name: RTP Makefile V.1.2
#date: 2006 05 30
#written by: chen yulin
#usage: make clean
# make objs
# make libs
# make vserver
# make vclient
# make all
#libneed: libjrtp libjthread
##########################################################################
CC=gcc
CXX=g++
SDLLIBS = $(shell sdl-config --libs)
SDLFLAGS = $(shell sdl-config --cflags)
SERVFLAGS= -O2 -DLINUX
MATH_LIB=-lm
SERVLIBS= $(MATH_LIB) -lpthread -ljrtp
INCL = -I/usr/local/include/jrtplib3 -I/. -I/usr/include/SDL -I/usr/local/include/jthread
CFLAGS = -DUSE_SDL -O2 -DLINUX $(SDLFLAGS) -pipe -O2 -fno-strength-reduce
CXXFLAGS = -DUSE_SDL -O2 -DLINUX $(SDLFLAGS) -lpthread -pipe -O2 -fno-strength-reduce
LDFLAGS = -ljrtp -L/usr/X11R6/lib -ljpgenc -ljpgdec -L./ -static -ljthread -lpthread
LFLAGS = -lpthread -L/usr/X11R6/lib -ljpgenc -ljpgdec -lSDL -L./ /usr/local/lib/libjrtp.a /usr/local/lib/libjthread.a
#编译SDL库的时候不能做静态联接-static,需直接指定所用库的地址
OBJECTS= c.o utils.o tcputils.o encoder.o huffman.o marker.o quant.o picture.o
OBJSERVER= s.o v4l.o utils.o tcputils.o encoder.o huffman.o marker.o quant.o
LIB_ENCODE = libjpgenc.a
LIB_ENCODE_OBJECT = v4l.o tcputils.o utils.o encoder.o huffman.o marker.o quant.o jdatatype.h
LIB_DECODE = libjpgdec.a
LIB_DECODE_OBJECT = utils.o encoder.o huffman.o marker.o quant.o picture.o jdatatype.h
all: vserver vclient
objs: v4l.o utils.o tcputils.o encoder.o huffman.o marker.o quant.o picture.o
libs: libjpgenc libjpgdec
clean:
@echo "Cleaning up directory."
rm -f *.a *.o ser vserver vclient core *~ log *.jpg *.bak errlog
vclient: $(OBJECTS)
$(CXX) $(CXXFLAGS) -o vclient $(OBJECTS) $(MATH_LIB) $(SDLLIBS) $(LFLAGS)
vserver: $(OBJSERVER)
# g++ -I/usr/local/include/jrtplib3 -I/usr/local/include/jthread -L/usr/local/lib -o ser s.cpp libjpgenc.a -lpthread -lm -DLINUX -ljrtp -ljthread
$(CXX) $(SERVFLAGS) -o vserver $(OBJSERVER) $(SERVLIBS) $(LDFLAGS)
libjpgenc: $(LIB_ENCODE_OBJECT)
ar -cur $(LIB_ENCODE) $(LIB_ENCODE_OBJECT) //自定义库的联接
libjpgdec: $(LIB_DECODE_OBJECT)
ar -cur $(LIB_DECODE) $(LIB_DECODE_OBJECT)
#只编译不链接
c.o: c.cpp jconfig.h utils.h
$(CXX) -c $(CXXFLAGS) $(SDLLIBS) $(INCL) $(MATH_LIB) -o $@ $<
s.o: s.cpp
$(CXX) -c -pipe -O2 -fno-strength-reduce $(INCL) -o $@ $<
# g++ -c -pipe -O2 -fno-strength-reduce -I/usr/local/include/jrtplib3 -I/usr/local/include/jthread -o s.o s.cpp
v4l.o: v4l.c v4l.h
$(CC) $(SERVFLAGS) -c -o $@ $<
utils.o: utils.c utils.h
$(CC) $(SERVFLAGS) -c -o $@ $<
tcputils.o: tcputils.c tcputils.h
$(CC) $(SERVFLAGS) -c -o $@ $<
encoder.o: encoder.c encoder.h
$(CC) $(SERVFLAGS) -c -o $@ $<
huffman.o: huffman.c huffman.h
$(CC) $(SERVFLAGS) -c -o $@ $<
marker.o: marker.c marker.h
$(CC) $(SERVFLAGS) -c -o $@ $<
quant.o: quant.c quant.h
$(CC) $(SERVFLAGS) -c -o $@ $<
picture.o: picture.c picture.h
$(CC) $(SERVFLAGS) -c -o $@ $<
修改被cpp函数调用的头文件,添加如下:
#ifdef __cplusplus
extern "C" {
#endif
..............
#ifdef __cplusplus
}
#endif