编写一个makefile的简单实例
2016-07-14 07:49
337 查看
编写一个makefile的简单实例
http://www.cnblogs.com/missliuxin/p/3540531.html说明:执行的环境ubuntu 12.04 + gcc
1.编写源代码(5个文件)
1)名称为main.c,代码如下:
#include "my1.h" #include "my2.h" int main() { my1_print("hello my1!"); my2_print("hello my2!"); return 0; }
2)名称为my1.h,代码如下:
#ifndef _MY_1_H #define _MY_1_H void my1_print(char *print_str); #endif
3)名称为my2.h,代码如下:
#ifndef _MY_2_H #define _MY_2_H void my2_print(char *print); #endif
4)名称为my1.c,代码如下:
#include "my1.h" #include <stdio.h> void my1_print(char *print_str) { printf("This is my2 print %s\n", print_str); }
5)名称为my2.c,代码如下:
#include "my2.h" #include <stdio.h> void my2_print(char *print_str) { printf("This is my2 print %s\n", print_str); }
2.编写makefile文件,名称为makefile(或者Makefile),内容如下:
main:main.o my1.o my2.o gcc -o main main.o my1.o my2.o main.o:main.c my1.h my2.h gcc -c main.c my1.o:my1.c my1.h gcc -c my1.c my2.o:my2.c my2.h gcc -c my2.c clean: rm -f *.o main
3.执行makefile文件。
3.1执行命令如下:
make
3.2输出结果如下:
gcc -c main.c gcc -c my1.c gcc -c my2.c gcc -o main main.o my1.o my2.o
4.最后查看和执行生成文件main。
file ./main
输出的结果为:
./main: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x2c63c471957d709e4d5a19c75c7eda60cfb2f3e2, not stripped
./main
输出的结果为:
This is my2 print hello my1! This is my2 print hello my2!
维基百科介绍:
在软件开发中,make是一个工具程序(Utility software),经由读取叫做“makefile”的文件,自动化建构软件。它是一种转化文件形式的工具,转换的目标称为“target”;与此同时,它也检查文件的依赖关系,如果需要的话,它会调用一些外部软件来完成任务。它的依赖关系检查系统非常简单,主要根据依赖文件的修改时间进行判断。大多数情况下,它被用来编译源代码,生成结果代码,然后把结果代码连接起来生成可执行文件或者库文件。它使用叫做“makefile”的文件来确定一个target文件的依赖关系,然后把生成这个target的相关命令传给shell去执行。
相关文章推荐
- hdu_3483A Very Simple Problem(C(m,n)+快速幂矩阵)
- 可否有一天,运维站在舞台最中央?
- Go语言学习笔记10
- 重构全局系统架构的方法与工具
- Fragment加入到Activity的两种方式
- 在 Ubuntu Mate 16.04 上通过 PPA 升级 Mate 1.14
- hdu_2604Queuing(快速幂矩阵)
- JAVA源码剖析之---Object类(三)---toString,wait,notify,notifyAll,finalize方法的使用
- linux 程序包管理5 编译安装
- SuperRecyclerView,只为打造出更好用的RecyclerView
- 软件工程技术
- 使用nvm利器,管理node版本
- 使用MEF实现通用参数设置
- python usefull lib
- send pkt
- Design Pattern - Structural Patterns - Facade Pattern
- 粉丝不足5万的公众号,怎么在60秒内变现?
- 中国“四大”名绣之苏绣_张家睿_新浪博客
- Cocos2d-x 图像渲染和动画——裁剪(ClippingNode)
- MATLAB中图像的几何操作