使用makefile編譯c程式
一、Makefile的規則
Makefile的規則如下:
target ... : prerequisites ...
command
這裡的command是指生成或是處理target隨執行的命令;prerequisites指的是生成target所需要依賴的檔案.
二、一個示例
自行編寫了2個C檔案(get_max.c,fn_max.c),我們為了完成前面所述的那三個規則,我們的Makefile應該是下
面的這個樣子的。
SHELL = /usr/bin/ksh
LINK.c = cc
get_max:get_max.o fn_max.o
get_max.o:get_max.c
fn_max.o:fn_max.c
clean:
我們可以把這個內容儲存在檔案為“Makefile”或“makefile”的檔案中,然後在該目錄下直接輸入命令“make”
就可以生成執行檔案get_max.。如果要刪除執行檔案和所有的中間目標檔案,那麼,只要簡單地執行一下
“make clean”就可以了。
三、makefile中使用變數
比如,我們宣告一個變數,叫objects,在makefile一開始就這樣定義:
objects=get_max.o fn_max.o
於是,我們就可以很方便地在我們的makefile中以“$(objects)”的方式來使用這個變數了,於是我們的改良版
makefile就變成下面這個樣子:
SHELL = /usr/bin/ksh
LINK.c = cc
objects=get_max.o fn_max.o
get_max:${objects}
fn_max.o:fn_max.c
clean:
於是如果有新的 .o 檔案加入,我們只需簡單地修改一下 objects 變數就可以了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/77311/viewspace-1019430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用makefile編譯編譯
- C編譯: makefile基礎編譯
- C 編譯: makefile 基礎編譯
- makefile教程---nmake命令編譯器的使用編譯
- 如何在Windows下使用make編譯MakefileWindows編譯
- 在Ubuntu環境下用gcc命令執行c程式以及Makefile編譯UbuntuGCC程式編譯
- Android Makefile 編譯過程分析Android編譯
- c#程式反編譯C#編譯
- 編譯器有關的Makefile語法編譯
- AndroidStudio使用NDK編譯C/C++程式碼使用原生庫Android編譯C++
- 使用C編譯器編寫shellcode編譯
- 在c++程式中呼叫被C編譯器編譯後的函式,為什麼要使用extern “C”C++編譯函式
- C編譯: 使用gdb除錯編譯除錯
- C 編譯: 使用 gdb 除錯編譯除錯
- C程式從編譯到執行C程式編譯
- ILSpy反編譯C#web程式編譯C#Web
- C程式編譯過程淺析C程式編譯
- 編譯C++ 程式的過程編譯C++
- protobuf 的交叉編譯使用(C++)編譯C++
- windows上使用clang編譯程式Windows編譯
- 在Linux上使用vscode編譯除錯C/C++程式碼LinuxVSCode編譯除錯C++
- 使用 Sublime Text 3 編譯 C 語言編譯
- 如何分析和提高(C/C++)程式的編譯速度?C++編譯
- android編譯系統makefile(Android.mk)寫法Android編譯
- 使用ZendEncode編譯PHP程式(轉)編譯PHP
- 附錄B Linux 下編譯 C 程式Linux編譯
- 如何加快C++程式碼的編譯速度C++編譯
- 檢視編譯C程式中間檔案編譯C程式
- 編寫一個 Makefile 檔案,對階段專案一的程式碼進行自動化編譯編譯
- C/C++ 通用 Makefile(轉)C++
- 優化C++程式碼(2):C++程式碼的編譯過程優化C++編譯
- Linux下c mysql程式的編譯命令(轉)LinuxMySql編譯
- c++模板類的使用,編譯的問題C++編譯
- C#反編譯工具:.NET Reflector基礎使用C#編譯
- Linux下使用make命令編譯c原始檔Linux編譯
- TMS320C54x C編譯器的使用S3編譯
- linux下靜態庫、動態庫編譯及makefile書寫Linux編譯
- 使用Reflector和Filedisassembler逆向編譯反編譯.cs.dll檔案程式碼編譯