当前位置: 首页 > news >正文

贵阳网站制作软件中国建设银行网站企业网银收费

贵阳网站制作软件,中国建设银行网站企业网银收费,哪个网站可以做魔方图片大全,百姓网找工作​ 嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的…

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的
passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let’s go!

请添加图片描述

我的博客:yuanManGan

我的专栏:C++入门小馆 C言雅韵集 数据结构漫游记 闲言碎语小记坊 进阶数据结构 走进Linux的世界 题山采玉 领略算法真谛

在这里插入图片描述


自动化构建工具make,makefile


文章目录

  • 自动化构建工具make,makefile
    • (一) 如何形成可执行程序?
      • 1. 预处理
      • 2. 编译
      • 3. 汇编
      • 4. 链接
    • (二) make和makefile
      • 1. 见一见make/makefile
      • 2. 谈make命令和makefile ---- 依赖关系和依赖方法
      • 3. 详细学习makefile的基本用法
      • 4. 语法细节梳理


(一) 如何形成可执行程序?


当我们写了一个普通的打印 hello worldtest.c 程序的时候,我们如果在vs2022下简单的按一下F5就可以在屏幕上打印hello world,因为vs2022是集成环境,他帮你进行了很多事情。
废话少说,要形成一个可执行程序需要进行一下操作:
1. 预处理
2. 编译
3. 汇编
4. 链接

如果想在Linux下直接生成可执行程序可以使用以下代码:

gcc -o obj src

接下来就慢慢讲一下过程:


1. 预处理

我们预处理阶段,编译器会进行以下操作

  1. 头文件展开
  2. 宏替换
  3. 条件编译
  4. 去注释

如果我们只想对文件进行预处理操作,可以采取以下代码:

gcc -E obj -o src

比如我想预处理 test.c 文件,可以

gcc -E test.c -o test.i

test.c:
在这里插入图片描述
经过预处理之后:
test.i:
在这里插入图片描述
前面800多行是对stdio头文件的展开


2. 编译

将c语言转化为汇编语言

同样的代码:

gcc -S test.i -o test.s

test.s
在这里插入图片描述

3. 汇编

将汇编语言翻译为二进制文件(.o可重定位目标二进制文件)

gcc -c test.s -o test.

注意test.o文件不能直接被运行缺少链接过程

test.o
在这里插入图片描述


4. 链接

将多个目标文件(.o/.obj)和所需的库文件(包括系统库、第三方库)合并为一个可执行程序,同时解决目标文件之间的符号引用(如函数调用、变量引用)。

gcc test.o -o test.exe

test.exe
在这里插入图片描述

(二) make和makefile

如果有单个的程序我们大可使用gcc来形成可执行程序,那100个1000个呢?我们难道还得一个一个打吗?
这时就可以借助自动化构建工具了,我们这里讲解make怎么使用。
我们的 make 本质上是一条命令,而 makefile 是一个文件。


1. 见一见make/makefile

我们先创建一个名为 makefile 的文件

​注意文件名只能是 makefileMakefile
在这里插入图片描述
然后退出来

make

在这里插入图片描述

2. 谈make命令和makefile ---- 依赖关系和依赖方法

在这里插入图片描述
依赖关系就好比月底的你和你的父亲,你们存在依赖关系,你月底了想找你爹要钱,你就是目标文件,你的父亲就是依赖文件列表,你向父亲要钱就是依赖的方法。

3. 详细学习makefile的基本用法

我们可以把关系搞复杂一定,我们进行预处理,编译,汇编,链接这几个过程,这个时候makefile文件就成了:
在这里插入图片描述
在这里插入图片描述
这里产生了一堆 hello.i/s/o/exe 的文件,我们如何清除这些呢?
在这里插入图片描述
在这里插入图片描述

这个.PHONY:先忽略,clean: 后面怎么没有依赖文件,我们可以没有依赖文件,但必须有目标文件和方法,比如你自己不依赖任何人都能吃饭。

clean的方法就是一条shell命令

我们make+目标名就可以使用它的方法,我们如果默认make就是第一个依赖方法。

.PHONY: 目标文件 表示该目标为伪目标,本质是该方法总是被执行。

在这里插入图片描述
我们make之后为什么不能再make呢?

比如我们有100个文件你只修改了一个文件,你难道为了这一个文件,又要再重新编译其他999个文件吗。所以普通文件有一个Modify,可以使用stat来查询
在这里插入图片描述
那这几个时间都和什么有关呢?

Modify: 文件的内容
Change: 文件的属性
Access:查看文件
在这里插入图片描述
在这里插入图片描述
我们发现我们往文件里面写入了东西,不仅Modify时间变了,Change时间也变了,这是为什么呢?

我们的文件属性还包括文件的大小和时间,你往文件里写入东西,不仅改变了文件的大小,还改变了
文件的Modify时间,所以Modify时间的改变往往会伴随着Change时间的改变。

那另一个时间呢?
在这里插入图片描述
当我们cat文件时它可能会变化,那为什么是可能呢?

你想我们对文件进行的操作最多的是什么呢?那当然是查看了,但我们查看操作更改的时间会刷新到硬盘中,我们频繁的刷新硬盘会导致OS整体的效率低下,所以当刷新一定次数,或者一段时间之后才会更新Access时间。

所以当Modify时间发生修改后才能重新makeclean操作将他变成伪目标后可以防止当外部有一个clean文件时,它会总是执行Makefile里面的clean

4. 语法细节梳理

在这里插入图片描述

我们可以这将目标文件和依赖文件这样替换,是不是很像c语言中的宏替换。
$@表示目标文件也就是BIN
$^表示依赖文件列表也就是SRC
在这里插入图片描述
如果你不想把你的命令显示到屏幕上可以在命令前加一个@
在这里插入图片描述
在这里插入图片描述
在我们工程中我们实际上会遇到很多.c文件
在这里插入图片描述
@<表示第一个依赖文件

在这里插入图片描述

http://www.dtcms.com/a/570244.html

相关文章:

  • kotlin常用语法点理解
  • STM32是什么?
  • 提高网站的访问速度网站后缀net
  • 安卓网站开发c 网站开发 书
  • 网站编辑 图片批量免费素材网站无版权
  • 给网站网站做优化重庆网站编辑职业学校
  • 【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
  • 巴彦淖尔网站建设公司互联网服务公司有哪些
  • 国家建设部网站倪虹旅游公司的网站怎么做
  • 医院做网站备案都需要什么网站判断手机跳转代码
  • 荆门网站建设514885网站如何添加内容
  • 电子商务的网站建设分析建设银行东莞招聘网站
  • 杭州大型网站建设彩票网站建设 极云
  • Spring-cloud 主键loadbalance
  • 网页模板下载网站知乎教育机构网站建设方案书
  • 高端网站建设浩森宇特电气行业网站建设多少钱
  • php网站开发考试定制版app
  • 得到Class类的方法及所有类型的Class对象
  • 网站keywords中企动力做网站行吗
  • 友情链接中有个网站域名过期了会影响wordpress站内链接
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P07-04 输入配置数据资产
  • 网站建设需要注意哪些内容电商o2o是什么意思
  • 反向传播在GAN训练中的作用
  • 架构进阶——解读50页大型集团企业IT基础架构应用运维体系解决方案【附全文阅读】
  • 电子商务网站建设编码广州微信网站建设平台
  • HTML炫酷烟花⑨
  • 网站评论怎么做的想做一个网站平台怎么做的
  • 网站模板制作与安装教程公司注册后每年的费用
  • 【java基础语法】------方法
  • 网站登不了企业建设网银wordpress自己安装了插件吗