Linux下C编程里的makefile
假设我们有下面这样的程序:
-
- #include "mytool1.h"
- #include "mytool2.h"
- #include <stdio.h>
-
- int main(int argc,char *argv[])
- {
- mytool1_print("hello");
- mytool2_print("hello");
- }
-
- #ifndef _MYTOOL1_H
- #define _MYTOOL1_H
- void mytool1_print(char *print_str);
- #endif
-
- #include "mytool1.h"
-
- void mytool1_print(char *print_str)
- {
- printf("This is mytool1 print %s\n",print_str);
- }
-
- #ifndef _MYTOOL2_H
- #define _MYTOOL2_H
- void mytool2_print(char *print_str);
- #endif
-
- #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”
这样也可以生成一个可执行程序。
评论暂时关闭