一、多個原始檔帶來的問題
二、make命令和makefile
1、makefile的語法
1)、makefile檔案由一組依賴關係和規則組成。
2)、make命令會會根據makefile檔案來確定目標檔案的建立順序以及正確的規則呼叫順序。
2、make命令的選項和引數
1)、make程式選項
i、-k:讓make命令在發現錯誤時任然繼續執行,而不是在檢測到第乙個錯誤時就停下來。
ii、-n:讓make命令輸出將要執行的操作步驟,而不是真正執行這些操作。
iii、-f :告訴make命令將那個檔案作為makefile檔案。
2)、為了指示make命令建立乙個特定的目標,可以把該目標的名字作為make命令額乙個引數。如果不這麼做,make命令將試圖建立列在makefile檔案中的第乙個目標。
3)、依賴關係
i、依賴關係定義了最終應用程式裡的每個檔案與原始檔之間的關係。
ii、makefile檔案規則:先寫目標的名稱。然後緊跟著乙個冒號,緊接著是空格或製表符tad,最後使用空格或製表符tab隔開的檔案列表。
4)、規則
3、makefile檔案中的注釋(馬克file檔案的注釋以#開頭,一直延續到這一行結束)
4、makefile檔案中的巨集
1)、通過語句macroname=value在makefile檔案中定義巨集,引用巨集的方法是使用$(macroname)或$。
2)、makefile檔案中的巨集常被用於設定編譯器的選項。
3)、常見的巨集列(p323 表9-1)
5、多個目標(p322-325**)
6、內建規則(p325-326**)
7、字尾和模式規則
1)、增加字尾名規則:首先需要在makefile檔案中增加一行語句,告訴make命令這個新的字尾名。然後既可以用這個新的字尾名來定義規則。
2)、kmake使用特殊語法:..:。
8、用make管理函式庫
1)、函式庫實際上就是檔案,它們通常以.a為字尾名,在該檔案中包含了一組目標檔案。
2)、用於管理函式庫的語法是lib(file.o),它的含義是目標檔案file.o是儲存在函式庫lib.a中的。make命令用乙個內建規則來管理函式庫,該規則的常見形式如下所示:
.c.a:
&(cc) -c $(cflags) $<
&(ar) -c $(arflags) $@ $*.o
i、第一條規則告訴它必須編譯原始檔以生成目標檔案。
ii、第二條規則告訴它用ar命令將新的目標檔案新增到函式庫中。
9、高階主題:makefile檔案和子目錄
1)、把構成幾個函式庫的檔案從主檔案中分離出來,並將它們儲存到乙個子目錄的方法
i、在子目錄中編寫第二個makefile檔案,它的作用是編譯該子目錄下的原始檔,並將它們儲存到乙個函式中,然後將該庫檔案複製到上一級的主目錄中。在主目錄中的
makefile檔案包含一條用於製作函式庫的規則,該規則會呼叫第二個makefile檔案如下所示:
mylib.a:
(cd mylibdirectory;$(make))
ii、在原來的馬克file檔案中新增一些巨集。新新增的巨集通過在我們已見過的巨集的尾部追加乙個字母得到,字母d代表目錄,字母f代表檔名。然後你就可以用下面的規則來替
換內建的.c.o字尾規則:
.c.o:
$(cc) $(cflags) -c $(@d)/$(這條規則的作用是:編譯子目錄中的原始檔並將目標檔案放置在該子目錄中。然後用如下到的依賴關係和規則來更新當前目錄下的函式庫:
mylib.a: mydir/2.o mydir/3.o
ar -rv mylib.a $?
10、gnu make和gcc
三、源**控制
1、rcs(版本控制系統)
1)、rcs 能夠跟蹤並記錄下原始檔的每一次改動,並將這些改動都記錄在乙個檔案中,該檔案中記錄的改動資訊足夠詳細,你可以·通過這些資訊重建出任何乙個以前的版
本。2)、rcs命令:
i、rcs(初始化rcs控制檔案)
ii、ci(將原始檔的當前版本「簽入」到rcs中)
co -l鎖住該檔案0。)
iv、rlog(檢視乙個檔案改動摘要)
v、rcsdiff(了解兩個版本之間的區別)
vi、版本標識(rcs系統可以在原始檔中使用一些特殊的字串(巨集)來幫助跟蹤檔案所做的改動。最常用的兩個巨集是$rcsfile$和$id$。巨集$rcsfile$將擴充套件為該檔案的名
字,而$id$將擴充套件為乙個標識版本號的字串。)
vii、ident(查詢包含$id$字串的檔案的版本)
2、sccs(源**控制系統)
3、rcs和sccs的比較(p337 表9-2)
4、cvs(併發版本控制系統)
1)、cvs的本地使用(p337-p340例程)
2)、跨網路訪問cvs(p340)
5、cvs的前端程式(wincvs)
6、subversion
四、編寫手冊頁(p342-p345)
五、發行軟體(p345-p348)
六、rpm軟體包(p349-p258)
七、開發環境
1、kdevelop
2、其他開發環境(p360 表9-6)
Linux開發工具
linux開發工具 vim gcc gdb make git github 文字編輯器 vim 功能最強大 1 使用 三種模式 命令列模式 插入模式 底行模式 vim 空格 檔名 例如vim hello.c 此時是命令列模式 無法插入資料 需要進入插入模式 按i或者a 退出插入模式 按esc 切換到...
Linux程式設計01 開發工具和開發平台
rz和sz是linux同windows進行zmodem檔案傳輸的命令列工具。sz命令利用zmodem協議來從linux伺服器傳送檔案到本地,一次可以傳送乙個或者多個檔案 rz命令從本地上傳到linux伺服器。要使用rz和sz命令需要檢視是否 有lrzsz軟體包。如果沒有則需要利用yum進行安裝 快捷...
Linux開發工具 gcc
鏈結程式把所有物件檔案中的機器碼組合在一起,並解析它們之間的交叉引用。它還整合了物件模組所使用的庫函式的 這是鏈結程式的一種簡化表示,因為這裡假定在可執行模組中,模組之間的所有鏈結都是靜態建立的。實際上有些鏈結是動態的,即這些鏈結是在程式執行時建立的。鏈結就是鏈結器ld將各個目標檔案組裝在一起,解決...