make和makefile介绍
<strong>先附上一个比较简单的,测试代码用的Makefile</strong>
</pre><pre code_snippet_id="463854" snippet_file_name="blog_20140904_3_4948303" name="code" class="cpp">.PHONY: all clean CC=gcc
CCFLAGS="-std=gnu99"
RM=rm
RMFLAGS=-fr SRCS=$(wildcard *.c)
OBJS=$(patsubst %.c, %.o, $(SRCS))
EXE=exe all:$(EXE) $(EXE):$(OBJS)
$(CC) $(CCFLAGS) -o $(EXE) $(OBJS) %.o:%.c
$(CC) $(CCFLAGS) -o $@ -c $^ clean:
$(RM) $(RMFLAGS) $(OBJS) *.out
一、make和makefile
make:在必要时重新编译所有受改动影响的源文件。
makefile:告诉make应用程序应该如何构造。
二、make命令
1. make选项和参数
-k: 让make即使发现错误也继续执行,以便于一次性输出所有错误。
-n:输出要执行的操作,不执行
-f:设置makefile文件。默认为makefile,如果该文件不存在则查找Makefile。如果使用GNU Make则优先查找GNUmakefile。
2. 目标
make命令会创建一个特定的目标,可以将该目标作为make的一个参数。如果没有使用该参数,则make将试图创建makefile文件中的第一个目标。
3. 依赖关系
程序目标依赖于.o文件,.o文件依赖于.c和.h文件。
比如一个程序如下所示
/* main.c */
#include "a.h" /* 2.c */
#include "a.h"
#include "b.h" /* 3.c */
#include "b.h"
#include "c.h"
则依赖关系如下所示:
myapp : main.o 2.o 3.o
main.o: main.c a.h
2.o: 2.c a.h b.h
3.o 3.c b.h c.h
如果程序要一次创建多个文件,如要创建可执行文件和用户手册,则可以使用为目标all
all:myapp myapp.help
三、makefile基础语法
1. 宏和注释
注释:make以#开头到行尾表示注释
宏:宏名 = value 表示定义一个宏。引用方法为 $(宏名)或${宏名}。宏的值可以为空
2,一个简单的makefile例子
# makefile中以#开头到行尾表示注释,所以本行是注释 #定义make为目标
all: myapp #宏定义编译器为gcc
CC = gcc myapp: main.o 2.o 3.o
#下一行为make规则,用tab键开头(不能用空格替代)
CC -o myapp main.c 2.o 3.o main.o: main.c a.h
CC -c main.c 2.o: 2.c a.h b.h
CC -c 2.c
3.o: 3.c b.h c.h
gcc -c 3.c
make和makefile介绍的更多相关文章
- 跟我一起写Makefile:MakeFile介绍
makefile 介绍 make命令执行时,需要一个 makefile 文件,以告诉make命令如何去编译和链接程序. 首先,我们用一个示例来说明makefile的书写规则.以便给大家一个感性认识.这 ...
- (转)Makefile介绍
2. Makefile介绍 make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样的去编译和链接程序. 首先,我们用一个示例来说明Makefile的书写规则.以便给大家一个感性 ...
- [转] Makefile 基础 (1) —— Makefile 介绍
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...
- Makefile 介绍
makefile:是告诉编译器(交叉工具链)如何去编译.链接一个工程的规则. 一.概述 什 么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为 ...
- 第一篇 make与makefile介绍
我们在Linux系统中学习C语言或者C++语言时,大多数时候只是用gcc命令或者g++命令在命令行进行简单的编译.链接即可得到最终的可执行文件,进一步即可验证所写C/C++语言的正确性.但是,在大型工 ...
- GNU Make chapter 2 —— Makefile 介绍
Makefile是由一系列的rule规则组成,这些rule都遵循以下形式: target ... : prerequisites ... command ... ... target(目标) 一般来说 ...
- CFLAGS/CPPFLAGS/CXXFLAGS in Makefile介绍
先来看一张关于Makefile中的常见预定义变量. CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项.这两个变量实际上涵盖了编译和汇编两个步骤.大多数程序和库 ...
- makefile介绍1.0
1.gcc参数 -o指定生成文件名 -c只编译不链接 2.makefile标准格式 CC=gcc #编译器变量,#代表注释 SRCS=main.cpp\#源文件变量 a.cpp\ b.cpp\ c.c ...
- GNU autotools自动生成Makefile 介绍
一.目的 使用autotools工具来帮助我们自动地生成符合自由软件惯例的makefile(这样就可以像常见的GNU程序一样,只要使用"./configure", "ma ...
随机推荐
- PyNest——part 4: topologically structured networks
part 4: topologically structured networks incorporating structure in networks of point neurons 如果我们使 ...
- sql server 中having 的使用注意事项
1.having 中不能使用未参与分列的组,having 不能替代where 作用不一样,having是对组进行过滤,where是每条记录进行过滤. 2.having 是对Group By 的条件分组 ...
- 吴超老师课程--Hive的介绍和安装
1.Hive1.1在hadoop生态圈中属于数据仓库的角色.他能够管理hadoop中的数据,同时可以查询hadoop中的数据. 本质上讲,hive是一个SQL解析引擎.Hive可以把SQL查询转换为 ...
- python16_day07【Socket网络编程】
一.简介 1.理解C/S,B/S 2.IOS七层模型(http://www.cnblogs.com/linhaifeng/articles/5937962.html) 二.什么是Socket 我们看看 ...
- vue之 node.js 的简单介绍
一.什么是 node.js? 它是可以运行在JavaScript的服务平台 二.安装 1.node.js的特性 - 非阻塞IO模型 - 时间驱动 2.运用场景 - 高并发低业务 - 实时场景 - 聊天 ...
- maven自动化构建deploy
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- MAC 终端terminal颜色
Mac终端terminal颜色实在太单调了,安装Linux使用的GNU Coreutils替换Mac的ls命令: Mac终端terminal颜色实在太单调了,安装Linux使用的GNU Coreuti ...
- pc端html页面到移动端等比缩放
head标签里面加这个<meta name="viewport" content="user-scalable=yes">
- Linux静默安装Oracle
打算在云服务器上装oracle服务,以前DBA美眉都是在图形化界面下安装,这次抓瞎了.赶紧上网查查,静默安装可以解决问题.于是乎赶紧开始部署,过程如下.安装环境:操作系统:CentOS 7内存:11G ...
- jdbc封装代码
jdbc封装代码 package jdbcUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sq ...