makefile的出現
什麼是makefile,有什麼欲求導致makefile的出現?
現實要求:
在實際開發中,不可能把所有程式放在乙個.c檔案裡,否則會使**臃腫,功能劃分不明確,不利於程式設計師看**。
即使做到了模組、功能、型別的劃分,把它們放在不同的.c檔案裡,但如果只是改了乙個檔案,整個可執行的檔案就要重新編譯。(使工作量增加,出錯率增加)
makefile的優勢
在makefile裡,我們可以根據自己對模組、型別、功能的需要,指定編譯規則==》指定哪些檔案要先編譯(比如標頭檔案),哪些檔案要後編譯,哪些檔案要重新編譯(如修改過的檔案)
優勢:①減少了不必要的編譯錯誤②可以實現自動化編譯,只需要在終端輸入乙個make指令,就可以把所有的.c檔案根據makefile規則編譯成可執行檔案。
makefile規則
格式:[target]:[prerequisites]
(tab) [command]
target(目標檔案):可以是.o檔案也可以是可執行檔案。
prerequisites:是要生成target檔案所需要的檔案。
command:把prerequisites生成target的命令。
就是說,當prerequisites中有檔案比target中的檔案新時,就會執行command規定的命令。
例:有add.c sub.c main.c 三個檔案,要生成名字為demo的可執行檔案。
demo:add
.osub
.o main.o
gcc add
.osub
.o main.o \
-o demo
add.o:
add.c
gcc add
.c -o add
.osub.o:
sub.c
gcc sub
.c -o sub
.omain.o:main.c
gcc main.c -o main.o
.phony:clean
clean :
rm -f add
.osub
.o main.o
makefile的變數
令
obj=main.o
add.o
sub.o
cc=gcc
demo:$(obj)
$(cc) $(obj) \
-o demo
add.o:
add.c
$(cc) add
.c -o add
.osub.o:
sub.c
$(cc) sub
.c -o sub
.omain.o:main.c
$(cc) main.c -o main.o
.phony:clean
clean :
rm -f $(obj)
makefile中包含了5樣:生成規則、隱晦規則、變數定義、檔案指示和注釋
隱晦規則
make支援自動推導功能,只要make看到乙個.o檔案它就會把同名的.c檔案放在依賴關係中,並且command也會自動推導出來。
obj=main.o
add.o
sub.o
cc=gcc
demo:$(obj)
$(cc) $(obj) \
-o demo
add.o:
add.c
sub.o:
sub.c
main.o:main.c
.phony:clean
clean :
rm -f $(obj)
清空.o檔案件
有利於重新編譯,也利於保持檔案的清潔
這是標準格式:
.phony
:clean
clean :
rm -f $(
obj)
一般格式:
clean :
rm -f $(obj)
萬用字元的使用
萬用字元可以使我們的makefile簡化
萬用字元有 * 、? 、… 、
*.c:表示所有 字尾為.c 的檔案。
*:表示*
obj=*.o
cc=gcc
demo:$(obj)
$(cc) $(obj) \
-o demo
add.o:
add.c
$(cc) add
.c -o add
.osub.o:
sub.c
$(cc) sub
.c -o sub
.omain.o:main.c
$(cc) main.c -o main.o
.phony:clean
clean :
rm -f $(obj)
NIO基本編寫
一 編寫server端 1 public class server implements runnable catch ioexception e 26 2728 override 29public void run 51 8 如果為可讀狀態 52if key.isreadable 55 9 寫資料...
編寫hashCode 的基本指導
1.給int變數賦予某個非零值常量,比如17.2.位物件內每個有意義的域f 既每個可以做equals 操作的域 計算出乙個int雜湊碼c.boolean c f?0 1 byte char short或int c int f long c int f f 32 float c float.float...
編寫MarkDown(MD)文件的基本語法
個人對md的觀點 基本語法 對html語法的支援 在使用github之前,我很少接觸markdown文件。在github隨處可見的readme.md就是md格式的檔案,我認為md語法比較人性化,用記事本就可以寫,但如果想即時預覽寫出的效果就要使用專業軟體了。這裡介紹一些常用的markdown語法。m...