makefile学习笔记

发布 2021-05-12 12:07:28 阅读 9822

1.预备知识:

本文的内容只要是讲解在linux学下知识点,当然有些东西是有一定的共通性,看个人理解。(1)unix历史知识(自己学习去,本文重点不在此)(2)unix的基本原则:

所有对象都是以文件的方式表现;配置数据以文本形式保存;由短小的单目程序构成;避免不必要的用户交互;

可使用多个程序合作完成复杂的任务。

3)gun项目介绍gunproject由richardstallman发起始于2023年,由自由软件**(fsf:freesoftwarefoundation)支持,gun是gun’snotunix的缩写;gun的主旨是:在于发展一个类似unix,并且为自由软件的完整操作系统:

gun系统。(4)gun的通用公共许可证(gpl)与非版权。(5)自由软件、开源软件。

6)linux系统的起源、特点、发行版、展望。

7)gcc是gunc语言的编译器,后来发展到了c++编译器,成为了guncompiler

collection的缩写。

2.编译单c文件:gcc 会默认产生文件,即默认的目标**文件;gcc–c 会产生和源文件同名的目标文件即:

gcc wang产生了名为wang的可执行文件或者gcc–o wang //wang就是可执行文件。

3.用到非系统默认类库:比如用到多线程类库:pthread

gcc wang–lpthread或者gcc–o wang 一定要放在l后面,即在-l后面加上你需要用到的类库。

4.多个源文件进行编译,即makefile的编写makefile的好处是防止源文件的重复编译。(比如有好多个源文件,某天对其中的一个源文件进行修改,如果不写makefile的话,需要将整个工程的所有文件重新编译一遍,非常的麻烦,有了makefile,说明了每个文件的依附关系,当某个源文件改变时,只需重新编译一下关联的源文件就好了)例如:

有一下文件。

中引入和两个头文件,和分别实现两个头文件中定义的函数。有两种方式编译运行改程序:(1)手动单独编译。

gcc–c

gcc–o main

/main2)makefile

只需在任何一个文本编辑器里面写下如下命令并保存为makefile

规则:target…:prerequisites…command……

main: main

gcc–c

这些源文件都需要在同一个目录下,并且在中引入和的时候要用“和“不要用<>,否则编译器会到系统类库文件中去找,是找不到的。然后再同一目录的终端下,输入make命令,那么编译就开始了,没有什么错误的话执行。/main就可以让你的程序跑起来了。

以上的过程太过于复杂,在此处写出主要是要读本笔记的人有个最直观的了解,现在介绍一种稍微精简的方式:首先认识三个符号:a$@b$<

代表目标文件代表第一个文件。

c$^代表所有依赖文件所以上面的所有命令精简为: $

gcc–c $<

怎么样,现在稍微有点复杂了吧,没关系,我还有更加精简的版本:再认识一个牛x的符号:

该符号自动搜索相关联的源文件和头文件main:

gcc$<

最后的一件事遵守优雅简洁原则适用clean命令将生成的目标文件和执行文件删除。clean:

gcc rm main

通用Makefile及实例

实现的功能 make 编译和连接程序。make objs 编译程序,生成目标文件。make clean 清除编译产生的目标文件 o 和依赖文件 d make cleanall 清除目标文件 o 依赖文件 d 和可执行文件 exe make rebuild 重新编译连接程序,相当于make clean...

嵌入式系统实验的makefile

一 实验目的。熟悉linux开发环境。学习嵌入式开发的基本过程。了解makefile的基本内容。二 基础知识。c语言基础知识。掌握linux环境下vi编译器的使用方法。掌握linux下的程序编译与交叉编译过程。三 实验环境。pc机pentium500以上,硬盘40gb以上,内存128mb以上。pc机...

as学习笔记

as学习笔记。彭禹,长江大学城市建设学院给排水10801班,200802417 1 动作面板 中动作赋予的基本步骤。2 实例 片头 动作赋予 帧 还是 对象 区别?1 如果赋予给帧,则新建as图层,在对应帧的下面插入空白关键帧,然后创建动作,动作创建后这一帧上面会出现一个 表示添加好了动作,最后在后...