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

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

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

    posts - 134,comments - 22,trackbacks - 0
    1.根據(jù)例子說(shuō)明,一下是linux下oracle10的程序編譯簡(jiǎn)單的makefile文件

    CC=cc -g
    PROC=proc
     
    CFLAGS=-DPRECOMP -I$(ORACLE_HOME)/precomp/public "
            -I$(ORACLE_HOME)/xdk/include -I.
    FLAGS= -D_ALL_SOURCE=1 -D_LINUX -g  -I../../incl -D_GNU_SOURCE -D_IS_EAB=1 -D__USE_GNU=1 -D__GCC_296 -I/usr/include/libxml2 -I../csrc -I../../csrc/ -DPOSIX=1 -DLINUX


    LIBHOME=$(ORACLE_HOME)/lib

    LLIBSQL= `cat $(LIBHOME)/sysliblist` "
             `cat $(LIBHOME)/ldflags` "

             -lclntsh


    LIBS= -L$(LIBHOME) $(LLIBSQL) -lmylib
     
    .SUFFIXES: .sqc .c .o
    %.c:%.sqc
            $(PROC) $(PROCPLSFLAGS) iname=$^ hold_cursor=yes
    %.o:%.c
            $(CC) -c $(FLAGS) $(LIBS) $^
     
    test:test.o test1.o test1.o
            cc -o $@ $(FLAGS) $(LIBS) $^
            rm -rf $^

    haha:test.o test1.o test1.o
            @echo "+="$+
            @echo "?="$?
            @echo "^="$^
            @echo "<="$<
            @echo "@="$@
            @echo "*="$*
            @echo "%="$%

    2.說(shuō)明

    2.1一般makefile編寫(xiě)有3個(gè)步驟

           1.宏定義。主要功能是定義一些宏變量已替代較長(zhǎng)的編譯支持信息。一般情況下針對(duì)編譯所需要得.h頭文件,.a/.so的庫(kù)文件路徑。比如例子中的CFLAGS是oracle預(yù)編譯需要數(shù)據(jù)庫(kù)支持的頭文件路徑。LIBHOME是oracle環(huán)境編譯需要數(shù)據(jù)庫(kù)庫(kù)文件路徑。

           2.源文件之間的相互依賴關(guān)系。列出需要產(chǎn)生目標(biāo)文件編譯依賴的文件。比如例子中的test目標(biāo),其產(chǎn)生時(shí)會(huì)檢測(cè)(test.o test1.o test1.o)這些依賴文件的變化,如果依賴文件有變化會(huì)自動(dòng)先編譯依賴文件。

           3.可執(zhí)行的命令.即針對(duì)目標(biāo)關(guān)系,所作出的編譯行為。比如test其檢測(cè)完依賴文件后執(zhí)行(cc -o $@ $(CFLAGS) $(LIBS) $^)編譯鏈接產(chǎn)生目標(biāo)執(zhí)行文件test.

             4.宏使用時(shí)用(),{}來(lái)確認(rèn)宏名稱例如${LIB}加{}會(huì)查找LIB的宏內(nèi)容,$LIB會(huì)查找L的宏內(nèi)容。

       2.2 :常用編譯項(xiàng)說(shuō)明

                1. -I:制定頭文件搜索的路徑

                2. -L:連接需要的庫(kù)文件路徑

                3. –l:連接需要的庫(kù)文件(比如:libmylib.so寫(xiě)作 –lmylib)

       2.3: 自動(dòng)化變量說(shuō)明:

    $+ :所有的依賴文件,以空格分開(kāi),并以出現(xiàn)的先后為序,可能包含重復(fù)的依賴文件。

    $?:所有的依賴文件,以空格分開(kāi),這些依賴文件的修改日期比目標(biāo)的創(chuàng)建日期晚

    $^ :所有的依賴文件,以空格分開(kāi),不包含重復(fù)的依賴文件。
    $< :第一個(gè)依賴文件的名稱。
    $@ :目標(biāo)的完整名稱。

    $* :不包含擴(kuò)展名的目標(biāo)文件名稱。
    $% :如果目標(biāo)是歸檔成員,則該變量表示目標(biāo)的歸檔成員名稱。

    具體對(duì)照使用以上makefile,執(zhí)行make haha得到如下對(duì)照信息:

    $ make haha

    test.o test1.o test1.o

    test.o test1.o

    test.o test1.o

    test.o

    haha

       2.4:后綴規(guī)則:

                .SUFFIXES: .sqc .c .o制定新的后綴規(guī)則。(%.c:%.sqc),( %.o:%.c)即規(guī)則行為。就是將所有.sqc轉(zhuǎn)為.c,.c再轉(zhuǎn)為.o。

                .c.o:等價(jià)于%.o:%.c

    3.注意:

        分行符"后面不能再有其他任何內(nèi)容。

        對(duì)齊行最好采用^I(tab鍵)

        注釋符號(hào)#

        include包含編譯文件

    posted on 2009-12-09 13:36 何克勤 閱讀(419) 評(píng)論(0)  編輯  收藏 所屬分類: GNU Linux/Unix
    主站蜘蛛池模板: 色播亚洲视频在线观看| 免费久久人人爽人人爽av| 亚洲av无码一区二区三区网站| 日本不卡高清中文字幕免费| a拍拍男女免费看全片| 久久99免费视频| 国产乱子伦精品免费视频| 久久亚洲精品11p| 亚洲国产系列一区二区三区| 亚洲国产国产综合一区首页| 亚洲午夜久久久影院| 亚洲国产精品一区二区九九 | 亚洲精品无码日韩国产不卡?V| 在线观看免费人成视频色| 99视频有精品视频免费观看| 少妇性饥渴无码A区免费 | 亚洲中文字幕在线第六区| 婷婷综合缴情亚洲狠狠尤物| 黄网址在线永久免费观看 | 亚洲综合av一区二区三区不卡 | 一区二区无码免费视频网站| 麻豆高清免费国产一区| 日韩视频在线观看免费| 99re6在线精品免费观看| 国产免费久久久久久无码| 久久久精品国产亚洲成人满18免费网站 | 一级特黄录像免费播放中文版| 偷自拍亚洲视频在线观看99| 亚洲sm另类一区二区三区| 亚洲精品理论电影在线观看| 伊人久久五月丁香综合中文亚洲| 亚洲一区二区三区成人网站| 亚洲色偷偷色噜噜狠狠99| 亚洲av综合av一区二区三区| 偷自拍亚洲视频在线观看| 免费无码又爽又黄又刺激网站| 日本高清不卡中文字幕免费| 一级黄色免费大片| 在线涩涩免费观看国产精品| 久久综合国产乱子伦精品免费| 67194熟妇在线永久免费观看 |