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协议栈自动创建的.因此开发者并不 ...
随机推荐
- python 加密 解密 签名 验证签名 公钥 私钥 非对称加密 RSA
加密与解密,这很重要,我们已经可以用pypcap+npcap简单嗅探到网络中的数据包了.而这个工具其实可以嗅探到更多的数据.如果我们和别人之间传输的数据被别人嗅探到,那么信息泄漏,信息被篡改,将给我们 ...
- Dash:程序员的好帮手(转载)
作为一名死coder,每天最常见的动作就是查看各种API文档,你一定也有过同时打开N个窗口(HTML.PDF.CHM),不停的在编辑器与文档之间切换的感受吧?怎么说呢,其实我很讨厌这种枯燥无味的动作, ...
- 【转】个人总结-网络安全学习和CTF必不可少的一些网站
转自:http://blog.csdn.net/ida0918/article/details/52730662 学习的地方很多,不能一一列举,一些优秀的网址和博客可能也没有提到,大家补充吧:P就简单 ...
- Enginering English for interview (1)
I was lucky to work in a foreign company, Here is an overview of the interview test : 1.Because of t ...
- Python 之 numpy 和 tensorflow 中的各种乘法(点乘和矩阵乘)
点乘和矩阵乘的区别: 1)点乘(即“ * ”) ---- 各个矩阵对应元素做乘法 若 w 为 m* 的矩阵,x 为 m*n 的矩阵,那么通过点乘结果就会得到一个 m*n 的矩阵. 若 w 为 m*n ...
- 显式(静态)调用: LIB + DLL + .H
1.编程时用ad.h,ad.lib,放在项目当前目录里2.在头文件中加入#include "ad.h"3.在Project Setting–>Link–>Object/ ...
- 各大公司java后端开发面试题
各大公司Java后端开发面试题总结 ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离 ...
- rar ubuntu
http://jingyan.baidu.com/article/1612d5004095eee20e1eeeab.html sudo 7z x ***.rar
- matlab读写视频VideoReader/VideoWriter
前言 视频处理分析的过程中,需要用到将视频一帧帧地读取.写入,本文就涉及此问题. 系统环境 1.系统:win7_64 2.matlab版本:matlab2015a 测试代码 代码一(读视频): %To ...
- stm32 DAC配置
VDDA 和 VSSA 为 DAC 模块模拟部分的供电,而 Vref+则是 DAC 模块的参考电压.DAC_OUTx 就是 DAC 的 输出通道了 (对应 PA4 或者 PA5 引脚). 由第一张图可 ...