<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小碼哥

    誰(shuí)謂河廣,一葦杭之

       :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      7 隨筆 :: 17 文章 :: 74 評(píng)論 :: 0 Trackbacks

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    訂閱Canvas

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    幾個(gè)簡(jiǎn)單適合小程序的Makefile,可直接拷貝使用,自己mark一下,這樣長(zhǎng)時(shí)間不用Makefile也不用去看手冊(cè)了

    0.只有一個(gè)文件
    # 變量的定義,方便使用
    CC      
    = gcc
    CCFLAGS 
    = -O2 -s
    BIN     
    = test
    OBJ     
    = root_password_tool_win32.o

    $(BIN) : $(OBJ)
        $(CC) $(CCFLAGS) 
    -o test $(OBJ)

    $(OBJ) : root_password_tool_win32.c
        $(CC) $(CCFLAGS) 
    -c root_password_tool_win32.c

    .PHONY : clean
    clean :
        
    -rm $(BIN) $(OBJ)



    1.簡(jiǎn)單編譯命令行程序,$(CC)前面是tab,不是space

    一共五個(gè)文件:
    test.c
    md5.c md5.h
    password.c password.h

    main函數(shù)在test.c中,test.c文件include了md5.h和password.h

    CC      = gcc
    CCFLAGS 
    = -O2 -s
    BIN     
    = password
    OBJ     
    = md5.o password.o test.o

    $(BIN) : $(OBJ)
        $(CC) $(CCFLAGS) 
    -o password $(OBJ)

    md5.o : md5.c md5.h
        $(CC) $(CCFLAGS) 
    -c md5.c

    password.o : password.c password.h
        $(CC) $(CCFLAGS) 
    -c password.c

    test.o : test.c
        $(CC) $(CCFLAGS) 
    -c test.c

    .PHONY : clean
    clean :
        
    -rm $(BIN) $(OBJ)

    make            # 編譯得到password.exe,這里在windows下cigwin+mingw環(huán)境中編譯
    make clean    # 清理編譯生成的*.o等文件

    2.使用g++編譯win32程序的Makefile,其中簡(jiǎn)寫了一些,可以對(duì)比1看看不同之處
    說明:
        (0)指定靜態(tài)庫(kù)目錄,連接靜態(tài)庫(kù)libcomctl32.a編譯程序
        (1)編譯windows資源文件(使用mingw的windres)
        (2)使用-mwindows編譯選項(xiàng)去除彈出的cmd窗口
    CC      = g++

    -O2       : optimization option
    -s        : build small binary
    -mwindows : use this option to remove the popping cmd window
    CCFLAGS 
    = -O2 --mwindows
    BIN     
    = test
    WINDRES 
    = windres
    RES     
    = resource.o
    OBJ     
    = main.o md5.o password.o $(RES)

    # where is your mingw library
    ?
    LIBPATH 
    = 'C:\Program Files\CodeBlocks\MinGW\lib\'

    LIBS
    =-L$(LIBPATH) -lcomctl32

    RM      
    = -rm 

    $(BIN): $(OBJ)
        $(CC) $(CCFLAGS) 
    -o $(BIN) $(OBJ) $(LIBS)

    main.o: main.cpp

    md5.o: md5.cpp md5.h

    password.o: password.cpp password.h

    # 編譯資源文件
    $(RES): resource.rc rpt.ico manifest
        $(WINDRES) 
    -o $(RES) resource.rc

    .PHONY:clean
    clean:
        $(RM) $(BIN) $(OBJ)


    3.編譯靜態(tài)庫(kù)
    其中一些$<,$^, $@是Makefile的自動(dòng)化變量,詳細(xì)了解可以看《跟我一起寫Makefile》的第五章
    CC            = g++
    OBJS         = utp.o utp_utils.o

    -g : for debug
    CFLAGS        
    = --O2 -Wall -DPOSIX
    TARGET        
    = libutp.a

    .cpp.o:
        $(CC) 
    -c $(CFLAGS) $<
        
    all: $(TARGET)

    libutp.a: $(OBJS)
        ar cru $@ $
    ^
        ranlib $@
        
    .PHONY : clean
    clean :
        
    -rm *.o $(TARGET)

    4.編譯動(dòng)態(tài)庫(kù)
    (0)windows下使用mingw編譯dll動(dòng)態(tài)庫(kù)
    CC      = g++
    OBJS    = utp.o utp_utils.o
    CCFLAGS = -fno-exceptions -fno-rtti -Wall -g -lwsock
    TARGET  = libutp.dll

    all: $(TARGET)

    $(TARGET): $(OBJS)
        -rm -f $(TARGET)
        $(CC) -shared -o $(TARGET) $(OBJS) -lws2_32

    .cpp.o:
        $(CC) -c -DPOSIX -fpic -I . -I utp_config_lib $(CCFLAGS) $<

    .PHONY: clean
    clean:
        -rm -f $(OBJS) $(TARGET)

    (1)linux下編譯so動(dòng)態(tài)庫(kù)
    CC      = g++
    OBJS    
    = utp.o utp_utils.o
    CCFLAGS 
    = -fno-exceptions -fno-rtti -Wall -g
    TARGET  
    = libutp.so

    all: $(TARGET)

    $(TARGET): $(OBJS)
        
    -rm -f $(TARGET)
        g
    ++ -shared -o $(TARGET) $(OBJS)

    .cpp.o:
        g
    ++ --DPOSIX -fpic -I . -I utp_config_lib $(CCFLAGS) $<

    .PHONY: clean
    clean:
        
    -rm -f $(OBJS) CCFLAGS


    5.編譯多個(gè)目標(biāo),0-2均是編譯單個(gè)目標(biāo)
    (0) 添加頭文件目錄
    (1) 使用自己編譯的靜態(tài)庫(kù)libutp.a
    CC          = g++ 
    CFLAGS      
    = -g
    LIBUTP_PATH 
    = /home/actiontec/workspace/code_reading/third_party/libutp/lib
    INCLUDES    
    = -I${LIBUTP_PATH}
    LIBS        
    = -L$(LIBUTP_PATH) -lutp -lpthread -lrt
    TARGET      
    = all

    all: server client

    server: server.cpp
        $(CC) $(CFLAGS) 
    -o $@ $^ $(INCLUDES) $(LIBS)

    client: client.cpp
        $(CC) $(CFLAGS) 
    -o $@ $^ $(INCLUDES) $(LIBS)

    .PHONY : clean
    clean:
        
    -rm *.o server client
    以上僅供參考
    posted on 2012-11-06 15:05 小碼哥 閱讀(5116) 評(píng)論(0)  編輯  收藏 所屬分類: linuxC語(yǔ)言

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 四虎国产精品成人免费久久| 2015日韩永久免费视频播放| 亚洲精品无码国产| 91老湿机福利免费体验| 亚洲AV色欲色欲WWW| 国产亚洲精品va在线| 无码人妻一区二区三区免费| 亚洲五月午夜免费在线视频| 久久成人永久免费播放| 亚洲天堂一区二区| 国产精品免费视频网站| 青青青国产手机频在线免费观看| 亚洲一区二区无码偷拍| 国产亚洲成人久久| 亚洲天堂免费在线视频| 亚洲日本国产综合高清| 亚洲乱码中文字幕综合| 免费无码黄网站在线观看| 久久成人免费播放网站| 麻豆91免费视频| 亚洲中文字幕无码一去台湾 | 久久WWW免费人成人片| aa毛片免费全部播放完整| 一本色道久久88亚洲精品综合| 亚洲精品成人区在线观看| 无码永久免费AV网站| 97无码人妻福利免费公开在线视频| 亚洲色大情网站www| 久久精品国产亚洲av麻豆小说 | 亚洲成aⅴ人在线观看| 中文字幕亚洲电影| 精品久久免费视频| 国产精品久久免费| 免费播放在线日本感人片| 色多多免费视频观看区一区| 亚洲国产成人99精品激情在线| 久久久综合亚洲色一区二区三区| 亚洲人成无码网站久久99热国产| 国产又黄又爽又猛免费app| 99精品视频在线免费观看| 国产精品永久免费|