# Makefile步步为营
本目录主要包含Makefile一步步递进学习的示例代码
## step0:Makefile小实验
进行Makefile小实验,体验Makefile的功能。
目录中的`Makefile`是不严谨的编写方式。
目录中的`Makefile_PHONY`是严谨的编写方式。
### make实验
切换至step0目录下,即Makefile所在的同级目录,使用如下命令实验:
``` bash
#在主机上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 `参数可以指定使用其它文件。
``` bash
#通过-f选项指定make使用的Makefile文件
make -f Makefile_PHONY
#本示例中其它操作与Makefile功能相同
```
-------
## step1:使用Makefile编译程序
使用Makefile编译Hello示例程序。
### 编译
编译的输出为`hello_main`文件
切换至step1目录下,即Makefile所在的同级目录,使用如下命令编译:
``` bash
#后编译
make
```
### 运行
编译后使用如下命令运行:
``` bash
./hello_main
```
----------
## step2:使用Makefile默认编译规则
使用Makefile编译Hello示例程序,Makefile中使用o文件依赖
### 编译及运行
本实验编译及运行操作与step1相同,切换至step2目录操作即可。
----------
## step3:使用变量
使用Makefile编译Hello示例程序,Makefile中使用变量
### 编译及运行
本实验编译及运行操作与step1相同,切换至step3目录操作即可。
### Makefile_test实验
Makefile_test文件用于变量赋值实验测试,可执行如下命令实验:
```bash
make -f Makefile
#实验输出为Makefile中各个变量的值
```
----------
## step4:使用变量及分支
使用Makefile编译Hello示例程序,Makefile中使用变量定义最终目标,并使用分支支持不同的架构
### x86架构编译及运行
切换至step4目录下,即Makefile所在的同级目录,使用如下命令编译:
``` bash
#先清理,否则可能因为*.o文件架构不同而出错
make clean
#后编译
make
```
编译后使用如下命令运行:
``` bash
./hello_main
```
### ARM架构编译及运行
切换至step4目录下,即Makefile所在的同级目录,使用如下命令编译:
``` bash
#先清理,否则可能因为*.o文件架构不同而出错
make clean
#后编译
make ARCH=arm
```
编译后使用如下命令运行:
``` bash
./hello_main
```
-------
## step5:使用函数
使用Makefile编译Hello示例程序,Makefile中使用函数,并支持层级目录。
### x86架构编译及运行
切换至step5目录下,即Makefile所在的同级目录,使用如下命令编译:
``` bash
make
```
编译的输出目录为`bulid_x86`
编译后使用如下命令运行:
``` bash
.bulid_x86/hello_main
```
### ARM架构编译及运行
切换至step5目录下,即Makefile所在的同级目录,使用如下命令编译:
``` bash
make ARCH=arm
```
编译的输出目录为`bulid_arm`
编译后使用如下命令运行:
``` bash
.bulid_arm/hello_main
```
### 清理文件
若要清理文件,也要指定架构
1. 清理x86的编译输出,默认架构为x86,直接make clean即可:
```bash
make clean
```
2. 清理arm的编译输出,需要使用ARCH=arm指定:
```bash
make clean ARCH=arm
```
3. 清理所有的编译输出,可以直接使用cleanall目标:
```bash
make cleanall
```
没有合适的资源?快使用搜索试试~ 我知道了~
Linux基础与应用开发实战指南——基于STM32MP1系列 配套代码.zip
共140个文件
c:57个
makefile:44个
h:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 89 浏览量
2024-02-11
11:56:04
上传
评论
收藏 397KB ZIP 举报
温馨提示
Linux基础与应用开发实战指南——基于STM32MP1系列 配套代码
资源推荐
资源详情
资源评论
收起资源包目录
Linux基础与应用开发实战指南——基于STM32MP1系列 配套代码.zip (140个子文件)
beep_demo 496KB
board 13B
sem.c 9KB
signal.c 8KB
sigaction.c 6KB
fifo.c 5KB
exce.c 5KB
bsp_uart.c 4KB
thread.c 4KB
wait.c 4KB
pipe.c 4KB
file_lock.c 4KB
mutex.c 3KB
thread_attr.c 3KB
posix_sem.c 3KB
tcsetattr.c 3KB
tcgetattr.c 3KB
stream_pipe.c 2KB
main.c 2KB
tcp_server.c 2KB
file.c 2KB
fork.c 2KB
posix_sem.c 2KB
shm_read.c 2KB
main.c 2KB
main.c 2KB
main.c 2KB
sem.c 1KB
sem.c 1KB
shm_write.c 1KB
tcp_client.c 1KB
main.c 1KB
main.c 1KB
main.c 1KB
main.c 1KB
msg.c 1KB
kill.c 1KB
test.c 1KB
msg.c 1KB
bsp_beep.c 1024B
alarm.c 991B
vfork.c 943B
main.c 909B
system.c 651B
main.c 615B
main.c 532B
bsp_beep.c 484B
hello_func.c 226B
hello_func.c 224B
hello_func.c 224B
hello_func.c 224B
hello_func.c 224B
hello.c 191B
hello_main.c 114B
hello_main.c 114B
hello_main.c 114B
hello_main.c 114B
hello_main.c 114B
test.c 0B
dest_file 806B
.gitignore 46B
bsp_beep.h 756B
bsp_beep.h 394B
sem.h 268B
sem.h 243B
sem.h 243B
bsp_uart.h 179B
hello_func.h 75B
hello_func.h 75B
hello_func.h 75B
hello_func.h 75B
hello_func.h 75B
hello_main 8KB
hello_main 8KB
hello_main 8KB
LICENSE 1KB
log 1KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
Makefile 2KB
共 140 条
- 1
- 2
资源评论
博士僧小星
- 粉丝: 1945
- 资源: 5903
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功