Makefile | Linux嵌入式编程 使用详细图解
针对的是对Makefile一点都不会的小白哦!
练习之前我们要做好准备:
(1):第一步创建一个目录,因为实验过程中生成的文件会很多,不要把你系统里的文件搞得乱七八糟。
[cjj@bogon ~]$ mkdir makedemo1
[cjj@bogon ~]$ cd ./makedemo1/
(2):接下来你需要写四个程序
[cjj@bogon makedemo1]$ vi f1.c
************************************************************************************************************************************************
[cjj@bogon makedemo1]$ vi f2.c
************************************************************************************************************************************************
[cjj@bogon makedemo1]$ vi head.h

************************************************************************************************************************************************
[cjj@bogon makedemo1]$ vi main.c
(3)准备工作完成,下面我们开始动真格的了!创建一个Makefile文件。
[cjj@bogon makedemo1]$ vi Makefile
写入以下内容:
test:f1.o f2.o main.o # 创建一个test文件,后面是他的以来文件,依赖
# 的文件是:f1.o; f2.o; main.o这三个文件。
gcc f1.o f2.o main.o -o test # 执行gcc编译命令,将f1.o ;f2.o; main.o三个文件编译生成test文件。
f1.o:f1.c # f1.o的依赖文件是f1.c
gcc -c Wall f1.c -o f1.o # 执行gcc编译命令,将f1.c 编译生成f1.o文件。
f2.o:f2.c # f2.o的依赖文件是f2.c
gcc -c Wall f3.c -o f2.o # 执行gcc编译命令,将f2.c 编译生成f2.o文件。
main.o:main.c # 同上
gcc -c Wall main.c -o main.o
.PHONY:clean # 这句话的意思就是可以使得clean这个语句重复编译
clean:
rm *.o test # 清除以“.o”为后缀的文件和test文件
注:gcc前面是Tab键,不要用空格键代替,会报错!!!!!
(4)做完这些就可以开始执行了
[cjj@bogon makedemo1]$ make
结果:

这时你会发现你的目录下多出很多文件

这时你一开始写的那四个文件如果没有改动再次执行编译的话,会有一行报错,不要担心,没有错!这是正常现象,表示你没有更新,不需要重新编译。

(5)现在可以看一下你的成果了
[cjj@bogon makedemo1]$ ./test

Makefile | Linux嵌入式编程 使用详细图解的更多相关文章
- Linux多线程编程之详细分析
线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步.互斥,这些东西将在本文中介绍.我见到这样一道面试题: 是否熟悉POSIX多线程 ...
- Linux下安装Nginx详细图解教程
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- Linux下安装Nginx详细图解教程 (nginx-1.2.6)
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- Linux下安装Nginx详细图解教程(一)
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- UNIX/Linux网络编程基础:图解TCP/IP协议栈
目录 1.主机到网络层协议:以太网协议 2.IP协议 3.网际控制报文协议(ICMP) 4.传输控制协议(TCP) 5.用户数据报文协议(UDP) 6.流控制传输协议(SCTP) 7.地址解析协议(A ...
- storysnail的Linux串口编程笔记
storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...
- 嵌入式linux多进程编程
嵌入式linux多进程编程 在主程序显示文本菜单.提供例如以下服务.要求每一个服务都通过生成子进程来提供. 服务包含:日历信息显示,日期信息显示,推断闰年服务,文件复制功能,数字排序功能.退出功能. ...
- 她娇羞道“不用这样细致认真的说啊~~”———详细图解在Linux环境中创建运行C程序
她娇羞说,不用这样细致认真的说啊———详细图解在Linux环境中创建运行C程序“不,这是对学习的负责”我认真说到 叮叮叮,停车,让我们看看如何在Linux虚拟机环境中,创建运行C程序 详细图解在Lin ...
- TCP三次握手及四次挥手详细图解
TCP三次握手及四次挥手详细图解 Andrew Huangbluedrum@163.com 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不 ...
随机推荐
- DevExpress WPF入门指南:加载动画的应用
LoadingDecorator是一个容器控件用于显示 long-loading 的内容.内容还没加载完成的时候会显示一个加载指示器,加载完成后指示器消失,如下图所示: 开启LoadingDecora ...
- JDK安装和环境变量配置-成功经验
JDK安装和环境变量配置1.下载安装软件 2.安装JDK--开发环境,路径 3.之后打开安装路径下的bin文件夹路径,我的是默认安装C:\Program Files\Java\jdk1.6.0_10\ ...
- vue-cli 添加到生产环境问题总结
1. 路径问题 部署到生产环境后的实际链接为: 服务器项目路径 + serviceUrl的路径 创建 GlobalConstant.js 分别配置 开发环境和生产环境的 路径 (注:此处生 ...
- Qt Quick Hello World hacking
/********************************************************************************************* * Qt ...
- Executor 框架
Java的线程既是工作单元,也是执行机制.从JDK5开始,把工作单元与执行机制分离开来.工作单元包括Runnable和Callable,而执行机制由Executor框架提供. Executor 框架简 ...
- 判断手机端还是pc端
public static bool CheckIsMobile() { bool flag = false; string agent = SystemWeb.HttpContext.Current ...
- set 与 map 的第一次尝试
map 杭电6015http://acm.hdu.edu.cn/showproblem.php?pid=6015 基本用法:map<string,int>mp; mp[class[ i ...
- day43 数据库知识欠缺的
一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型 ...
- Centos7修改文件夹权限和用户名用户组
Linux系统下经常遇到文件或者文件夹的权限问题,或者是因为文件夹所属的用户问题而没有访问的权限.根据我自己遇到的情况,对这类问题做一个小结.在命令行使用命令“ll”或者“ls -a”,可以查看文件或 ...
- Eolinker API 接口文档神器
Eolinker API 接口文档神器 群里小伙伴推荐的,还没有去研究,先记下来. API文档管理.自动化测试.开发协作利器 正在为数万企业管理超过100万APIs,提高开发效率以及规范开发流程