讀書(shū)筆記——深入理解計(jì)算機(jī)系統(tǒng)01
1、Cygwin環(huán)境安裝:該書(shū)中有示例程序需要編譯,我選擇gcc,所以在Windows上安裝了Cygwin。安裝非常簡(jiǎn)單,一路Next后通過(guò)快捷方式——Cygwin Bash Shell 可進(jìn)入Linux Shell。
2、gcc編譯:寫一個(gè)簡(jiǎn)單的c程序,并(在Linux Shell中)調(diào)用gcc進(jìn)行編譯,便后的文件可以在Shell運(yùn)行。要脫離Shell在Windows中運(yùn)行 則需要把cygwin1.dll復(fù)制到適當(dāng)位置(一般是當(dāng)前路徑或Windows的系統(tǒng)路徑,如system32等)。
3、再?gòu)?fù)習(xí)編譯的過(guò)程:編譯的過(guò)程經(jīng)過(guò)預(yù)處理器、編譯器、匯編器、鏈接器四個(gè)階段完成。預(yù)處理器處理源代碼中的指令如 include等;編譯器將源代碼翻譯成匯編語(yǔ)言源代碼;匯編器將匯編源碼編譯二進(jìn)制目標(biāo)代碼,鏈接器處理對(duì)其它庫(kù)函數(shù)(如:printf)的引用,其它函數(shù)一般存在于其它的目標(biāo)文件中(如printf.o),連接器負(fù)責(zé)將引用的函數(shù)導(dǎo)入,并生成最終的可執(zhí)行文件;
4、如何判斷是否可執(zhí)行文件:Windows中由特殊的文件后綴名標(biāo)示可執(zhí)行文件,但在其它OS中卻有不同在Unix/Linux中就沒(méi)有文件后綴,判斷的標(biāo)準(zhǔn)在乎文件的實(shí)際內(nèi)容。