一、引言
從我們剛開始編寫一個簡單的C/C++ "Hello,World!",到將其編譯、運行處結果—這部分工作IDE(集成開發環境)幫我們做了,包括語法錯誤檢查,編譯,調試,執行二進制程序。大部分時間我們只關注程序代碼本身的編寫,如何在Linux下對C/C++源代碼的 進行有效管理,包括編譯、鏈接、調試,make工具可以幫助我們完成這部分的工作。
二、從“Hello,World”說起
1、執行單個源文件
一個編寫好的C或C++代碼源程序需要通過編譯、鏈接等步驟才能生成可執行的二進制文件。
例如:源文件:hello_world.c的源碼為:
[1] 第一步:編譯生成目標文件 hello_world.o (gcc -c hello_world.c )
[2] 第二步:鏈接(這裡只有一個hello_world.o)生成可執行文件hello_world(gcc -o hello_world hello_world.o)
2、編譯多個源文件
例如:源文件:hello_world.c say_ok.c 和main.c的源程序代碼為:
需要對包含這個三個源程序文件項目生成可執行文件main
[1] 生成目標對象文件(OBJ):
[2] 鏈接生成可執行文件main:
三、管理多個源程序文件
通常我們在編寫項目的時候不可能只有一個源文件程序(main.c/main.cpp),一般情況下會有多個源文件(.c/.cpp)和頭文件需要管理。正如前面所描述的如果有三個源文件hello_world.c, say_ok.c, main1.c,每次當我們對源碼修改過後,都必須重新運行一遍所有的編譯命令,試 想一 下如果文件不止三個,而是有很多個的時候......這將對程序員無疑是一個災難。所以,我們必須尋求一個有效的的程序源碼管理方式—make機制可以幫助我們解決這個問題。
1、make
make命令是系統管理員和程序員用的最頻繁的命令之一。管理員用它通過命令行來編譯和安裝很多開源的工具,程序員用它來管理他們大型復雜的項目編譯問題。
2、makefile文件書寫格式
目標:原料
<Tab>加工方法
3、makefile實例
4、make常用選項
[1]-B 選項: make 命令不會編譯那些自從上次編譯之後就沒有更改的文件,但是,如果你想覆蓋 make 這種默認的行為,可以使用-B選項
[2]-g選項:調試選項,用於GDB調試
[3]clean: 清除所有當前的對象文件好和執行文件