mikesno 2020-02-23
本目录主要包含Makefile一步步递进学习的示例代码
makefile代码实例:https://www.lanzous.com/i9m9npi
进行Makefile小实验,体验Makefile的功能。
目录中的Makefile
是不严谨的编写方式。
目录中的Makefile_PHONY
是严谨的编写方式。
切换至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功能相同
使用Makefile编译Hello示例程序。
编译的输出为hello_main
文件
切换至step1目录下,即Makefile所在的同级目录,使用如下命令编译:
#后编译 make
编译后使用如下命令运行:
./hello_main
使用Makefile编译Hello示例程序,Makefile中使用o文件依赖
本实验编译及运行操作与step1相同,切换至step2目录操作即可。
使用Makefile编译Hello示例程序,Makefile中使用变量
本实验编译及运行操作与step1相同,切换至step3目录操作即可。
Makefile_test文件用于变量赋值实验测试,可执行如下命令实验:
make -f Makefile #实验输出为Makefile中各个变量的值
使用Makefile编译Hello示例程序,Makefile中使用变量定义最终目标,并使用分支支持不同的架构
切换至step4目录下,即Makefile所在的同级目录,使用如下命令编译:
#先清理,否则可能因为*.o文件架构不同而出错 make clean #后编译 make
编译后使用如下命令运行:
./hello_main
切换至step4目录下,即Makefile所在的同级目录,使用如下命令编译:
#先清理,否则可能因为*.o文件架构不同而出错 make clean #后编译 make ARCH=arm
编译后使用如下命令运行:
./hello_main
使用Makefile编译Hello示例程序,Makefile中使用函数,并支持层级目录。
切换至step5目录下,即Makefile所在的同级目录,使用如下命令编译:
make
编译的输出目录为bulid_x86
编译后使用如下命令运行:
.bulid_x86/hello_main
切换至step5目录下,即Makefile所在的同级目录,使用如下命令编译:
make ARCH=arm
编译的输出目录为bulid_arm
编译后使用如下命令运行:
.bulid_arm/hello_main
若要清理文件,也要指定架构
make clean
make clean ARCH=arm
make cleanall