假設我們有下面這樣的程序:
- /*main.c*/
- #include "mytool1.h"
- #include "mytool2.h"
- #include <stdio.h>
-
- int main(int argc,char *argv[])
- {
- mytool1_print("hello");
- mytool2_print("hello");
- }
- /*mytoo1.h*/
- #ifndef _MYTOOL1_H
- #define _MYTOOL1_H
- void mytool1_print(char *print_str);
- #endif
- /*mytool1.c*/
- #include "mytool1.h"
-
- void mytool1_print(char *print_str)
- {
- printf("This is mytool1 print %s\n",print_str);
- }
- /*mytool2.h*/
- #ifndef _MYTOOL2_H
- #define _MYTOOL2_H
- void mytool2_print(char *print_str);
- #endif
- /*mytool2.c*/
- #include "mytool2.h"
-
- void mytool2_print(char *print_str)
- {
- printf("This is mytool2 print %s\n",print_str);
- }
我們可以這麼編譯鏈接這個程序:
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o myprint main.o mytool1.o mytool2.o
這樣之後只需執行命令"./myprint",便可以簡單的運行這個程序。
但是當我們修改了其中的一個文件之後是不是還要不厭其煩的輸入上面的編譯命令?
為了解決這一問題,我們有個好方法去解決,那就是編寫一個makefile文件,用make命令去編譯上面的程序。
執行命令"vim Makefile”
編寫如下代碼:
- main: main.o mytool1.o mytool2.o
- [Tab]gcc -o myprint main.o mytool1.o mytool2.o
- main.o: main.c mytool1.h mytool2.h
- [Tab]gcc -c main.c
- mytool1.o: mytool1.c mytool1.h
- [Tab]gcc -c mytool1.c
- mytool2.o: mytool2.c mytool2.h
- [Tab]gcc -c mytool2.c
保存後執行命令“make -f Makefile”
這樣也可以生成一個可執行程序。