makefile的编写和使用
来源:互联网 发布:知进退呼为神 编辑:程序博客网 时间:2024/06/04 08:31
今天看了GCC编译器和GDB调试,用几个小程序测试了一下,感觉挺简单的,但是可能习惯了以前的IDE环境编程,对使用命令总感觉有点不太适应,尤其是有多个头文件的程序,编译过程显得有点麻烦,再让后看,又出现了makefile和make的概念,原来这就是为了解决多个头文件的程序的编译问题。makefile算是一种脚本语言,使用make命令前,必须先在当前工程下,编写makefile文件,然后编写完成后,执行make命令,完成之后就会产生可执行文件。
makefile的基本格式:
目标:与目标依赖的各种目标文件
[tab] 执行条件
example: target: test.o test1.o
gcc -o target test.o test1.o
test.o:test.c
gcc -c test.c
......
clean:
rm -rf target
rm -rf *.o
其中,clean是一个命令,在执行make clean命令时,会把编译好的target和.o文件删掉。
关于make命令:当我们输入make命令执行时,系统会自动的再当前目录下寻找Makefile或者makefile。
我的第一个makefile:
目标:res
C file:test.c myfile.c
H file:myfile.h
先写test.c:
#include<stdio.h>#include"myfile.h"int main(){ int num; printf("input a number:"); scanf("%d",&num); printf("the sum is:",sum(m)); return 1;}
再写myfile.c:
<pre name="code" class="html">#include<stdio.h>int s(int m){ int a=0,i; for(i=0;i<=m;i++) { a += i; } return a;}
再写myfile.h:
<pre name="code" class="html">#ifndef __MYFILE_H__#define __MYFILE_H__int s(int m);#endif
最后是makefile文件的编写:
<pre name="code" class="html">res:test.o myfile.o gcc -o res test.o myfile.otest.o:test.c gcc -c test.cmyfile.o:myfile.c myfile.h gcc -c myfile.cclean: rm -rf res rm -rf *.o
最后,执行make命令即可。
makefile的简化:
makefile有三个非常有用的变量:$@, $^ ,$<.
$@-----目标文件;$^------所有的依赖文件;$<------第一个依赖文件。
因此,上述makefile可以改写为:
res:test.o myfile.o gcc -o $@ $^test.o:test.c gcc -c $<myfile.o:myfile.c myfile.h gcc -c $<clean: rm -rf res rm -rf *.o
makefile就先学到这里!
0 0
- makefile的编写和使用
- Makefile的编写和使用
- make的使用和Makefile的编写
- make的使用和Makefile的编写
- Makefile文件编写和autotools的使用
- Makefile编写和使用技巧
- make的使用和Makefile的编写1
- linux C中make的使用和makefile的编写
- 简单 使用 的makefile编写 框架
- Clion 使用自己编写的 Makefile编译
- vim的部分使用及makefile编写
- makefile和source文件的编写
- Kconfig和Makefile的编写例子
- 静态库的创建和编写makefile
- makefile的编写规则和示例
- linux 生成和使用动态链接库和静态链接库的Makefile编写
- linux 生成和使用动态链接库和静态链接库的Makefile编写
- linux 生成和使用动态链接库和静态链接库的Makefile编写
- 【移动开发】Android中WIFI开发总结(一)
- E: 未发现软件包 install_flash_player_11_linux.x86_64.tar.gz
- 关于串的循环移动与最小覆盖几个问题
- 华为机试—输出含“23”的数
- opencv: converting color 后序
- makefile的编写和使用
- 如何配置EditPlus编译运行Java程序?
- 第三章思维导图
- c++11 静态断言
- iOS性能优化
- 【移动开发】Android中WIFI开发总结(二)
- android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a vi
- 自己编写的表单验证插件
- 断电不断网——Linux的screen