c語言學習筆記二十二

2021-06-16 09:27:49 字數 1919 閱讀 9057

自動處理標頭檔案的依賴關係

all:test34

test34:test34.o test33.o test31.o

gcc$~ -o $@

test34.o:test34.c test29.h test30.h test32.h

test33.o:test33.c test32.h test29.h

test31.o:test31.c test30.h  test29.h

clean:

-rm main *.o

.phony:clean

生成目標檔案和原始檔的依賴關係

gcc -m test34.c

yuezhenhua@ubuntu:/opt/sdk/tc/makefile$ gcc -m test34.c

test34.o: test34.c /usr/include/stdio.h /usr/include/features.h \

/usr/include/i386-linux-gnu/bits/predefs.h \

/usr/include/i386-linux-gnu/sys/cdefs.h \

/usr/include/i386-linux-gnu/bits/wordsize.h \

/usr/include/i386-linux-gnu/gnu/stubs.h \

/usr/include/i386-linux-gnu/gnu/stubs-32.h \

/usr/lib/gcc/i686-linux-gnu/4.4.6/include/stddef.h \

/usr/include/i386-linux-gnu/bits/types.h \

/usr/include/i386-linux-gnu/bits/typesizes.h /usr/include/libio.h \

/usr/include/_g_config.h /usr/include/wchar.h \

/usr/lib/gcc/i686-linux-gnu/4.4.6/include/stdarg.h \

/usr/include/i386-linux-gnu/bits/stdio_lim.h \

/usr/include/i386-linux-gnu/bits/sys_errlist.h test29.h test30.h \

test32.h

如果不需要輸出系統檔案的依賴關係

gcc -mm *.c

yuezhenhua@ubuntu:/opt/sdk/tc/makefile$ gcc -mm *.c

test31.o: test31.c test30.h test29.h

test33.o: test33.c test32.h test29.h

test34.o: test34.c test29.h test30.h test32.h

把這些規則包含到makefile中

all: test34

test34: test34.o test33.o test31.o

gcc $^ -o $@

clean:

-rm test34 *.o

.phony: clean

sources = test34.c test33.c test31.c

include $(sources:.c=.d) 

%.d: %.c 

set -e; rm -f $@;

$(cc) -mm $(cppflags) $< > $@.$$$$;

sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@;

rm -f $@.$$$$

常用的make命令列選項

-n 列印要執行的命令

-c可以切換到另一目錄執行該目錄下的makefile

-g 可以在命令列定義cflags變數

c語言學習筆記二十二

自動處理標頭檔案的依賴關係 all test34 test34 test34.o test33.o test31.o gcc o test34.o test34.c test29.h test30.h test32.h test33.o test33.c test32.h test29.h test...

c語言學習筆記二十

makefile基礎 基本規則 一般的程式都是由多個原始檔編譯鏈結而成,而這些原始檔的處理通常是由makefile來處 理示例 如下 test29.h ifndef main h define main h 宣告點型別 typedef struct point item t 宣告最大列和行變數 de...

二十二 Oracle學習筆記 Oracle異常

一 oralce異常 1.oracle低層定義了很多異常,每個異常都有乙個唯一的編碼,這些異常之中,有一些是比較常見的,oracle 給這些異常定義了名稱,可以直接使用,其他沒有名稱只有編碼的不能直接使用。2.異常的分類 1 預定義異常 既有編碼又有名稱的異常是預定義異常,此類異常可以直接使用 2 ...