【转】Makefile步步为营
Makefile步步为营
本目录主要包含Makefile一步步递进学习的示例代码
makefile代码实例:https://www.lanzous.com/i9m9npi
step0:Makefile小实验
进行Makefile小实验,体验Makefile的功能。
目录中的Makefile
是不严谨的编写方式。
目录中的Makefile_PHONY
是严谨的编写方式。
make实验
切换至step0目录下,即Makefile所在的同级目录,使用如下命令实验:
#在主机上Makefile所在的目录执行如下命令
#查看当前目录的内容
ls
#执行make命令,make会在当前目录下搜索“Makefile”或“makefile”,并执行
make
#可看到make命令后的输出,它执行了Makefile中编写的命令
#查看执行make命令后的目录内容,多了test.txt文件
ls
#执行Makefile的targetd目标,并查看,少了test.txt文件
make targetd
ls
#执行Makefile的targetb目标,并查看,又生成了test.txt文件
make targetb
ls
#执行Makefile的targetc目标
make targetc
make使用-f
参数可以指定使用其它文件。
#通过-f选项指定make使用的Makefile文件
make -f Makefile_PHONY
#本示例中其它操作与Makefile功能相同
step1:使用Makefile编译程序
使用Makefile编译Hello示例程序。
编译
编译的输出为hello_main
文件
切换至step1目录下,即Makefile所在的同级目录,使用如下命令编译:
#后编译
make
运行
编译后使用如下命令运行:
./hello_main
step2:使用Makefile默认编译规则
使用Makefile编译Hello示例程序,Makefile中使用o文件依赖
编译及运行
本实验编译及运行操作与step1相同,切换至step2目录操作即可。
step3:使用变量
使用Makefile编译Hello示例程序,Makefile中使用变量
编译及运行
本实验编译及运行操作与step1相同,切换至step3目录操作即可。
Makefile_test实验
Makefile_test文件用于变量赋值实验测试,可执行如下命令实验:
make -f Makefile
#实验输出为Makefile中各个变量的值
step4:使用变量及分支
使用Makefile编译Hello示例程序,Makefile中使用变量定义最终目标,并使用分支支持不同的架构
x86架构编译及运行
切换至step4目录下,即Makefile所在的同级目录,使用如下命令编译:
#先清理,否则可能因为*.o文件架构不同而出错
make clean
#后编译
make
编译后使用如下命令运行:
./hello_main
ARM架构编译及运行
切换至step4目录下,即Makefile所在的同级目录,使用如下命令编译:
#先清理,否则可能因为*.o文件架构不同而出错
make clean
#后编译
make ARCH=arm
编译后使用如下命令运行:
./hello_main
step5:使用函数
使用Makefile编译Hello示例程序,Makefile中使用函数,并支持层级目录。
x86架构编译及运行
切换至step5目录下,即Makefile所在的同级目录,使用如下命令编译:
make
编译的输出目录为bulid_x86
编译后使用如下命令运行:
.bulid_x86/hello_main
ARM架构编译及运行
切换至step5目录下,即Makefile所在的同级目录,使用如下命令编译:
make ARCH=arm
编译的输出目录为bulid_arm
编译后使用如下命令运行:
.bulid_arm/hello_main
清理文件
若要清理文件,也要指定架构
- 清理x86的编译输出,默认架构为x86,直接make clean即可:
make clean
- 清理arm的编译输出,需要使用ARCH=arm指定:
make clean ARCH=arm
- 清理所有的编译输出,可以直接使用cleanall目标:
make cleanall
【转】Makefile步步为营的更多相关文章
- 说说Makefile那些事儿
说说Makefile那些事儿 |扬说|透过现象看本质 工作至今,一直对Makefile半知半解.突然某天幡然醒悟,觉得此举极为不妥,只得洗心革面从头学来,以前许多不明觉厉之处顿时茅塞顿开,想想好记性不 ...
- 编写一个通用的Makefile文件
1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe ...
- 编写简单的Makefile文件
makefile中的编写内容如下: www:hello.c x.h gcc hello.c -o hello clean: rm hello www:hello.c x.h 表示生成www这个文件需 ...
- 简单编写Makefile
相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云.在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide.其实makefile并没有 ...
- [转]Linux中configure/makefile
本文教你如何使用autoconf.automake等来制作一个以源代码形式(.tar.gz)发布的软件.并可在执行configure时使用自定义参数. 一.概述和基础知识 在Linux下得到一个以源代 ...
- Linux内核配置、编译及Makefile简述
Hi,大家好!我是CrazyCatJack.最近在学习Linux内核的配置.编译及Makefile文件.今天总结一下学习成果,分享给大家^_^ 1.解压缩打补丁 首先是解压缩你获取到的Linux内核. ...
- make 查找的文件名顺序为:“GNUmakefile”、“makefile”、“Makefile”
默认的情况下,make会在工作目录(执行make的目录)下按照文件名顺序寻找makefile文件读取并执行,查找的文件名顺序为:“GNUmakefile”.“makefile”.“Makefile”. ...
- 实例:对2个Makefile的备注
实例1:Makefile编译链接简单.c函数 example.c Makefile exe: example.c gcc example.c -o exe clean: rm exe 执行效果: 实例 ...
- Linux中C程序调试、makefile
gcc基本语法格式:gcc [-选项] 源文件 [-选项] 目标文件,GCC编译C程序的过程: 预处理:gcc -E hello.c hello.i.-E指定执行到预处理结束,下面类似. 编译:gcc ...
随机推荐
- 5、python基本数据类型之数值类型
前言:python的基本数据类型可以分为三类:数值类型.序列类型.散列类型,本文主要介绍数值类型. 一.数值类型 数值类型有四种: 1)整数(int):整数 2)浮点数(float):小数 3)布尔值 ...
- Rainbow Plan团队项目第一次作业——项目计划
团队项目--Rainbow Plan英语学习App 1.团队简介 1.1团队名称:Rainbow Plan (彩虹计划) 1.2团队成员: 队员学号 队员姓名 201731024235 何继武(组长) ...
- Dubbo入门到实战
前沿:在当下流行的分布式架构中Dubbo是非常流行的一门技术,借着这几天有空学习学习,并在后面的项目中进行实战,为后面的分布式项目做铺垫. Dubbox简介 Dubbox 是一个分布式服务框架,其前身 ...
- XGBoost原理学习总结
XGBoost原理学习总结 前言 XGBoost是一个上限提别高的机器学习算法,和Adaboost.GBDT等都属于Boosting类集成算法.虽然现在深度学习算法大行其道,但很多数据量往往没有太 ...
- 《 Java 编程思想》CH03 操作符
< Java 编程思想>CH03 操作符 在最底层,Java中的数据是通过操作符来操作的. 操作符 +,-,*,*,=与其他语言类似 几乎所有的操作符只能操作"基本类似" ...
- 浅谈C语言的数据存储(一)
作者:冯老师,华清远见嵌入式学院讲师. 程序由指令和数据组成,C语言程序亦是如此.开发者在编写程序的时候往往需要根据不同数据的特点以及程序需求来选择不同的数据存储方式,那么在C语言中数据的存储分为哪些 ...
- C# 多态和接口
1多态可以有属性,接口只有方法 2关键字不同,多态有静态多态(abstract)和动态多态(virtual),静态多态不能new()出自己,动态多态可以;多态中可以有自己的方法可设置不需要子类重写,接 ...
- MingGW Posix VS Win32 - 明瓜娃的毒因
MinGW-posix和win32纠缠的瓜娃子 官方首席佛偈(SourceForge)的官网下载页 法克油啊,让我一个小白情何以堪. 盘TA wiki posix wiki中文-UNIX API标准 ...
- 一口气说出Redis 5种数据结构及对应使用场景,面试要加分的
整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 ...
- 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第二节:画矩形
有了上一节画线的基础,画矩形的各种边线就特别好理解了,所以,本节在矩形边线上,就不做过多的讲解了,关注一下画“随机矩形”的具体实现就好.与画线相比较,画矩形稍微复杂的一点就是在于它多了很多填充的样式. ...