Makefile入门教程
Makefile介绍
make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。
Makefile格式
target: prerequisites
commands 目标文件: 依赖项
命令
最简单的Makefile
以Hello World为例:
(1) 先编写好源文件(.c文件),然后在同一目录下新建名为Makefile(之前首字母必须大写,现在大小写都行)的文本文件。

(2) 编写Mikefile

(3)打开终端,运行make命令,即可生成可执行文件hello,运行hello,即输出Hello World.

变量的定义及使用
CC = gcc #定义变量并赋值
CFLAGS = -lm -Wall -g hello: hello.c
$(CC) $(CFLAGS) hello.c - o hello #引用前面定义的变量,$(变量名),这种形式
实际效果没变,只是便于修改某些参数
使用变量替换后的情况:

同时编译多个可执行文件
例如:bar.c包含求数组中最大值函数,foo.c包含求数组中最小值函数,各自对应的头文件是bar.h、foo.h,main_max调用求最大值函数来打印最大值,main_min调用求最小值函数打印最小值。
Makefile可如下编写:
CC = gcc
CFLAGS = -O -Wall -m64 -std=gnu89
LIBS = -lm all: main_max main_min #必须写成all这样的形式,否则只会生成前一个可执行文件main_max main_max: main_max.c bar.o foo.o
$(CC) main_max.c bar.o foo.o -o main_max main_min: main_min.c bar.o foo.o
$(CC) main_min.c bar.o foo.o -o main_min foo.o: foo.c
$(CC) -c foo.c bar.o: bar.c
$(CC) -c bar.c .PHONY: clean
20 clean:
rm *.o main_max main_min
clean
由于源代码发布通常不会有可执行文件和.o文件,使用 rm *.o xx(可执行文件名) ,再输入make clean命令就可以自动清除。
为了避免与名为clean的文件冲突,最好在clean前面加.PHONY。
Makefile入门教程的更多相关文章
- CMake快速入门教程-实战
http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ http://blog.csdn.net/dbzhang800/article/detai ...
- 转:CMake快速入门教程-实战
CMake快速入门教程:实战 收藏人:londonKu 2012-05-07 | 阅:10128 转:34 | 来源 | 分享 0. 前言一个多月 ...
- 转:asm.js 和 Emscripten 入门教程
转:http://www.ruanyifeng.com/blog/2017/09/asmjs_emscripten.html asm.js 和 Emscripten 入门教程 作者: 阮一峰 日期: ...
- CMake入门教程(转帖)
本文转自:https://www.cnblogs.com/never--more/p/6921837.html CMake入门教程 参考文献:http://www.ibm.com/developerw ...
- Linux 新手入门教程
Linux 新手入门教程 1991年10月5日,Linus Torvalds 在互联网上发布消息,宣布他自己开发的内核系统诞生了.他将内核源代码保存在芬兰最大的 FTP 网站上,命名为 Linux,取 ...
- 《Redis5.x入门教程》之准备工作、数据类型
关注公众号:CoderBuff,回复"redis"获取<Redis5.x入门教程>完整版PDF. 第一章 · 准备工作 Redis安装 Redis5.0.7下载地址:h ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
随机推荐
- 【Linux学习】Linux文件系统3—文件操作命令
Linux文件系统3-文件操作命令 Linux文件操作命令主要有: cd: 改变目录位置 pwd: 显示当前目录的绝对路径 ls: 显示文件名称.属性等 -a 列出全部文件 -l 列出 ...
- 3-3if-else条件结构 & 3-4 & 3-5
新建类: ConditionDemo2 package com.imooc.operator; public class ConditionDemo2 { public static void mai ...
- 移动端UI资源
1.Flat UI Free http://designmodo.github.io/Flat-UI/ 2.POP 原型工具 http://mobilehub.io/products/pop 3.ei ...
- UVA - 11987 Almost Union-Find 并查集的删除
Almost Union-Find I hope you know the beautiful Union-Find structure. In this problem, you're to imp ...
- http协议之版本差异(2)
—————————————HTTP1.0/HTTP1.1—————————————— 建立连接方面 HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用.HTTP/1.1 新的请求可以在上 ...
- throw UnsupportedOperationException
package org.usc.action; import java.util.ArrayList; import java.util.Arrays; import java.util.List; ...
- 萌新笔记之堆(heap)
前言(萌新感想): 以前用STL的queue啊stack啊priority_queue啊,一直很想懂原理,现在终于课上到了priority_queue,还有就是下周期中考,哈哈,所以写几篇blog总结 ...
- fetch请求数据,后台将cookie一起返回时
请求时,添加以上标记的属性,就可以拿到后台给的cookie,并返回给后台.比如登录后才能有的操作,这样就需要返回给后台cookie从而判断是否登录
- [NOIP2014]无线网站发射器选址
Description 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网.假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状, ...
- Centos 5.11 升级 Openssl
由于Openssl版本较低,故此升级版本来解决一些小问题. 1:查看openssl版本: [root@server-008 ~]# openssl versionOpenSSL 0.9.8e-fips ...