C/C++混合編譯Makefile終於完全Debug了

來源:互聯網
上載者:User
#########################################################################
#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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.