Linux c==Makefile最简版本 (18)
来源:互联网 发布:香港底层 知乎 编辑:程序博客网 时间:2024/04/29 04:17
大学有阵子做嵌入式的时候觉得Makefile简直高不可攀~~
教程大多数都在试图把许多细节都讲清楚~~没有跟教程死磕3天的劲头真的不容易搞懂Makefile
而且写Makefile需要一点点gcc编译器的储备知识。对于在Linux上刚上手的开发者的确有点绕。
所以我在这里做了个最简版的Makefile,看懂这个,你大体能知道Makefile该怎么写~~~~其他细节,只能“大行不顾细谨”了
从这里下载Makefile最简版本:
http://download.csdn.NET/detail/sera_ph/7111665
里面的文件为 DandL.txt Makefile outlib.c outlib.h testmake.c
其中main函数位于testmake.c中
testmake.c 中调用了由outlib.h声明outlib.c定义的一个函数。
使用gcc将这个最简单的工程编译链接的shell命令,在DandL.txt中
gcc -c outlib.c gcc -c testmake.c gcc testmake.o outlib.o -o testmake
gcc -c 的意思是将(.c文件)源文件编译,生成目标文件(.o文件)~~(源文件的#include预处理就能找到对应的头文件(.h文件))
gcc 目标文件 -o testmake的意思是将目标文件链接,生成可执行文件。testmake是可执行文件的名字。
这些就是你需要知道的gcc储备知识
Makefile就是针对这3个代码文件的最简版本
Makefile的基本语法如下:
target...(目标) : prerequisites...(依赖文件) <span style="white-space:pre"> </span>command(shell命令)
这些通过我写的Makefile很容易理解:
all: testmake.o outlib.o gcc testmake.o outlib.o -o exeFile outlib: outlib.c outlib.h gcc -c outlib.c testmake: testmake.c gcc -c testmake.c clean: rm -f *.o exeFile
很明显,我们能看到,这个Makefile包含4个基本语句。
当在当前文件夹下,输入make outlib时,就相当于执行target为outlib的那语句的command
执行结果如下:
[***@localhost testmake]$ ls DandL.txt Makefile outlib.c outlib.h testmake.c [***@localhost testmake]$ make outlib gcc -c outlib.c [***@localhost testmake]$ ls DandL.txt Makefile outlib.c outlib.h outlib.o testmake.c
其中,make all和make clean是Makefile最常用的功能,一般要注意检查一下。
当你掌握这些~你已经出师可以自己写Makefile~当然,还有许多高端的技巧等你学习探索。
- Linux c==Makefile最简版本 (18)
- Makefile最简版本,看完你就会写Makefile了
- 【Linux C】Makefile入门
- Linux C MakeFile
- Linux C Makefile编译
- Linux之Makefile(# ?=)
- linux驱动最简单的makefile
- 最简单linux字符驱动程序及makefile
- linux-c++-makefile的使用方法
- Linux c 开发 - Makefile工具
- 【Linux C】第八章 Makefile
- linux+vsCode+makefile -- 调试C
- Makefile中的-C和M=解析
- Makefile中的-C和M=解析
- 最详尽解释Linux内核源码中的container_of宏及其标准C版本实现
- Linux Makefile中 = := ?=
- 关于Linux版本的Makefile改趁VC++版本的MakeFile!
- 关于Linux版本的Makefile改趁VC++版本的MakeFile!
- Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
- Opencv中argc和argv参数
- 98. Validate Binary Search Tree
- Java基础
- ANR 如何避免
- Linux c==Makefile最简版本 (18)
- POj King 1364(差分约束)
- 小玉买文具程序加题解
- 【浙江理工大学2016年新生赛暨全国新生邀请赛】 F 牛吃草,ZSTUOJ4243 【计算几何+二分】
- JavaScript基础_15正则表达式
- 假如我是计算机系老师
- IOS开发之__bridge,__bridge_transfer和__bridge_retained
- Linked List的基本操作(创建/删除/插入/查找)
- Centos7.2安装Hadoop2.6.0