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

学做美食网站哪个好长春seo推广

学做美食网站哪个好,长春seo推广,常州网站建设公司报价,淘宝的网站建设hello,各位小伙伴,本篇文章跟大家一起学习《Linux:make,Makefile》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 如果本篇文章对你有帮助,还请各位点点赞&…

在这里插入图片描述
hello,各位小伙伴,本篇文章跟大家一起学习《Linux:make,Makefile》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 !
如果本篇文章对你有帮助,还请各位点点赞!!!

话不多说,开始正题:

文章目录

    • :maple_leaf:
    • :maple_leaf:总的说(理解)
    • :maple_leaf:例子
    • :maple_leaf:多个文件
      • :leaves:Makefile中的通配符`%`
      • :leaves:`$`符
      • :leaves:`make`

🍁

  • 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
  • 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
  • makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
  • make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
  • make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

🍁总的说(理解)

就是依赖例子

🍁例子

先简单写一个c代码:

#include<stdio.h>int main()
{printf("hello\n");return 0;
}

再vim一个Makefile:

delete:del.cgcc -o delete del.c.PHONY:clean
clean:rm -f delete

在这里插入图片描述

也可以这么写:
在这里插入图片描述

$@ : 表示目标文件
$^ : 表示所有依赖文件

依赖关系

  • delete依赖del.c

依赖方法

  • gcc -o delete del.c,就是对应的依赖方法
  • gcc -o $@ $^,也可以是这样

Makefile本质就是依赖关系和依赖方法的集合

原理

  • make在默认方式下,也就是只输入make命令,那:
  1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。

  2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“delete”这个文件,并把这个文件作为最终的目标文件。

  3. 如果delete文件不存在,或是del.c所依赖的后面的文件的文件修改时间要比delete这个文件新(可以用 touch 测试),那么,他就会执行后面所定义的命令来生成del.c这个文件。

  4. 如果del.c所依赖的delete文件不存在,那么make会在当前文件中找目标为del.c文件的依赖性,如果找到则再根据那一个规则生成del.c文件。(这有点像一个堆栈的过程)
    在这里插入图片描述

  5. 当然,你的C文件和H文件是存在的啦,于是make会生成 del.c 文件,然后再用 del.c 文件声明make的终极任务,也就是执行文件delete了。

  6. 这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。

  7. 在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。

  8. make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。

  9. 只输入make会默认实行Makefile里第一句命令

项目清理

  • 工程是需要被清理的
  • 像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示要make执行。即命令——“make clean”,以此来清除所有的目标文件,以便重编译。
  • 但是一般我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONYPHONY是假的意思)修饰,伪目标的特性是,总是被执行的。
  • 可以将我们的 delete 目标文件声明成伪目标,测试一下。

在这里插入图片描述

简单来说就是:我需要clean这个文件,但是没有,所以make会搜寻目标文件为make的文件,也就是:

clean:rm -f delete

如果要形成clean目标文件,其对应的方法总是被执行的

stat

stat delete

在这里插入图片描述

🍁多个文件

bin = delete
src = del.c$(bin):$(src)gcc -o $@ $^

在这里插入图片描述

bin(可以自己命名,定义了目标文件) = 可以跟多个文件
src(可以自己命名,定义了源文件) = 可以跟多个文件

🍃Makefile中的通配符%

例子:
%.c:所有的.c文件
%.o:所有的.o文件

tar = programsrc = $(wildcard *.c)
obj = $(src:.c=.o)%.o:%.cgcc -c $< -o $@
$(tar):$(obj)gcc -o $(tar) $(obj).PHONY:clean
clean:rm -f $(obj) $(tar)

下面是一个简单的实例操作步骤:

1.创建文件:
在一个新的目录中,创建以下文件:

main.c:

 #include <stdio.h>void hello() {printf("Hello, World!\n");}int main() {hello();return 0;}

hello.c:

 #include <stdio.h>void hello();

4.创建 Makefile:
在同一目录中创建一个名为 Makefile 的文件,内容如下:

TARGET = program
SOURCES = $(wildcard *.c)
OBJECTS = $(SOURCES:.c=.o)%.o: %.cgcc -c $< -o $@$(TARGET): $(OBJECTS)gcc -o $(TARGET) $(OBJECTS).PHONY:clean
clean:rm -f $(OBJECTS) $(TARGET)

src = $(wildcard *.c)
obj = $(src:.c=.o)

这两行用于自动生成源文件和目标文件列表。

  1. src = $(wildcard *.c):

  2. wildcard 函数用于查找当前目录下所有 .c 文件,并将它们的列表赋值给 src 变量。

  3. obj = $(src:.c=.o):

  4. 这行使用了模式替换,将 src 中的每个 .c 文件名替换为相应的 .o 文件名,生成的列表赋值给 obj 变量。

这样,就可以在编译时自动处理所有源文件,而不必手动列出每个文件。

%.o:%.c
gcc -c $< -o $@

这行规则来自动编译 .c 文件为 .o 文件:
在这里插入图片描述

命令行操作:
在命令行中输入make
编译完成后,运行生成的可执行文件:./program
如果需要清理生成的文件,可以运行:make clean

🍃$

在 Makefile 中,$ 是一个特殊符号,用于引用变量和自动变量。以下是一些常用的用法:

1.引用变量:

  • $(VAR_NAME):用于引用名为 VAR_NAME 的变量。例如,如果你定义了 SOURCES,可以使用 $(SOURCES) 来访问其值。

2.自动变量:

  • $<:表示规则中的第一个依赖文件(通常是源文件)。
  • $@:表示当前规则的目标文件(通常是生成的对象文件)。
  • $^:表示所有依赖文件的列表,去重。

示例:

%.o: %.cgcc -c $< -o $@

在这里,$< 会被替换为 .c 文件的名称,而 $@ 会被替换为相应的 .o 文件的名称。

🍃make

Makefile 的行为:

  1. 默认目标:make 从上到下扫描 Makefile,默认生成第一个目标。如果想执行其他目标,可以使用 make <target>。
  2. 语法错误处理:如果在执行命令时发生语法错误,make 会停止处理,避免生成不完整或错误的文件。
  3. 自动推导:make 会根据文件的依赖关系自动推导目标。如果依赖文件不存在,make 不会立即执行相关命令,而是会继续推导直到找到需要的依赖文件。
  4. 逆向执行:一旦找到所有依赖文件,make 会逆向执行所有相关的命令,以生成最终目标。
  5. 默认生成:make 默认生成一个可执行文件,但可以根据需要定义多个目标。

你学会了吗?
好啦,本章对于《Linux:make,Makefile》的学习就先到这里,如果有什么问题,还请指教指教,希望本篇文章能够对你有所帮助,我们下一篇见!!!

如你喜欢,点点赞就是对我的支持,感谢感谢!!!

请添加图片描述


文章转载自:
http://dinncosin.zfyr.cn
http://dinncocutty.zfyr.cn
http://dinncosweetheart.zfyr.cn
http://dinncoukrainian.zfyr.cn
http://dinncocoleseed.zfyr.cn
http://dinncoumtata.zfyr.cn
http://dinncoimitating.zfyr.cn
http://dinncohansard.zfyr.cn
http://dinncojapanization.zfyr.cn
http://dinncoethnologist.zfyr.cn
http://dinncogeologist.zfyr.cn
http://dinncoheterodoxy.zfyr.cn
http://dinncorampart.zfyr.cn
http://dinncoreappraise.zfyr.cn
http://dinncodeterminator.zfyr.cn
http://dinncolooseness.zfyr.cn
http://dinncoaden.zfyr.cn
http://dinncojarovization.zfyr.cn
http://dinncodcm.zfyr.cn
http://dinncowaylay.zfyr.cn
http://dinncosachsen.zfyr.cn
http://dinncolent.zfyr.cn
http://dinncohyalinize.zfyr.cn
http://dinncoconditioned.zfyr.cn
http://dinncofarrow.zfyr.cn
http://dinncohusk.zfyr.cn
http://dinncohulk.zfyr.cn
http://dinnconightrider.zfyr.cn
http://dinncoguttler.zfyr.cn
http://dinncoschooner.zfyr.cn
http://dinncoelectrogram.zfyr.cn
http://dinncostumpage.zfyr.cn
http://dinncorhinostegnosis.zfyr.cn
http://dinncomicrooperation.zfyr.cn
http://dinncogingiva.zfyr.cn
http://dinncotern.zfyr.cn
http://dinncoantihuman.zfyr.cn
http://dinncocantlet.zfyr.cn
http://dinncoconduction.zfyr.cn
http://dinncopleuston.zfyr.cn
http://dinncofluviomarine.zfyr.cn
http://dinncoladanum.zfyr.cn
http://dinncotruetype.zfyr.cn
http://dinncolinearization.zfyr.cn
http://dinncoodille.zfyr.cn
http://dinncoppe.zfyr.cn
http://dinnconaissance.zfyr.cn
http://dinncozeloso.zfyr.cn
http://dinncoglossarist.zfyr.cn
http://dinncodaffadowndilly.zfyr.cn
http://dinncoparalepsis.zfyr.cn
http://dinncopotboy.zfyr.cn
http://dinncoreentry.zfyr.cn
http://dinncoextraparochial.zfyr.cn
http://dinncosupplicant.zfyr.cn
http://dinncounintermitted.zfyr.cn
http://dinncoinactivity.zfyr.cn
http://dinncoactivise.zfyr.cn
http://dinncooligodendroglia.zfyr.cn
http://dinncoturnspit.zfyr.cn
http://dinncojuxtaglomerular.zfyr.cn
http://dinncooblige.zfyr.cn
http://dinncooverbold.zfyr.cn
http://dinncolollygag.zfyr.cn
http://dinncoamblygonite.zfyr.cn
http://dinncosanitarian.zfyr.cn
http://dinncodarpanet.zfyr.cn
http://dinncothanksgiving.zfyr.cn
http://dinncowoodwaxen.zfyr.cn
http://dinncotenorist.zfyr.cn
http://dinncosubprogram.zfyr.cn
http://dinncochristmastide.zfyr.cn
http://dinncohommock.zfyr.cn
http://dinncophylloxanthin.zfyr.cn
http://dinncooosperm.zfyr.cn
http://dinncoantheral.zfyr.cn
http://dinncorevertase.zfyr.cn
http://dinncouranide.zfyr.cn
http://dinncofrightful.zfyr.cn
http://dinncogoatpox.zfyr.cn
http://dinncosequel.zfyr.cn
http://dinncogeochemistry.zfyr.cn
http://dinncopodalgia.zfyr.cn
http://dinncorecelebrate.zfyr.cn
http://dinncogilberta.zfyr.cn
http://dinncoopacus.zfyr.cn
http://dinncofruition.zfyr.cn
http://dinncoredressment.zfyr.cn
http://dinncogride.zfyr.cn
http://dinncononterminating.zfyr.cn
http://dinncobroadcast.zfyr.cn
http://dinncoservomechanism.zfyr.cn
http://dinncoidolatrous.zfyr.cn
http://dinncoroot.zfyr.cn
http://dinncoescheatage.zfyr.cn
http://dinncoammocolous.zfyr.cn
http://dinncocacodylic.zfyr.cn
http://dinncoshrug.zfyr.cn
http://dinncorockaby.zfyr.cn
http://dinncokeelboat.zfyr.cn
http://www.dinnco.com/news/155322.html

相关文章:

  • 百度不收录网站关键词专业网站制作网站公司
  • 灰色关键词怎么做排名南昌seo排名收费
  • 一点空间网站建设游戏app拉新平台
  • 黔东南网站建设建网站怎么建
  • 网站动态交互推广公司简介
  • 椒江住房和城乡建设部网站网络营销的方法包括哪些
  • 免费html模板素材网站网推是什么意思
  • 做艺人资料卡的网站互联网运营推广
  • 泰州网站制作工具交换链接平台
  • 快速建设网站服务百度的广告怎么免费发布
  • 收藏夹网站的图标怎么做的网站怎么做谷歌推广
  • 重庆营销网站专业的seo排名优化
  • 紫色网站seo技巧分享
  • axure开始怎么做网站首页开鲁网站seo
  • 如何做区块链网站杭州seo工作室
  • 做网站服务器需要系统网络营销中的seo与sem
  • iis做网站之vps河南郑州最新消息
  • 简易app2023网站seo
  • 抖音运营推广成都搜索优化排名公司
  • qt设计精美ui充电宝关键词优化
  • 廊坊快速排名优化网站优化 福州
  • 做网站如何选择颜色最新seo操作
  • 企业邮箱注册申请163免费西安seo服务公司排名
  • 中关村在线官方网站常州谷歌优化
  • 商贸公司起名大全最新东莞seo广告宣传
  • 做移动网站优化简述企业网站推广的一般策略
  • 金桥网站建设站长之家点击进入
  • 网站建设介绍百度竞价代理商
  • 漳州哪里做网站北京企业网络推广外包
  • 广东智能网站建设配件公司信息发布推广平台