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

南宁保障住房建设管理服务中心网站长春网络建设公司

南宁保障住房建设管理服务中心网站,长春网络建设公司,用html做企业门户网站,对网站建设的调研报告文章目录 一、 Linux项目自动化构建工具make/Makefile1.make/makefile工作现象2.依赖关系与依赖方法3.如何清理4.为什么这里我们需要带上clean5.连续的make6.特殊符号 二、Linux下实现一个简单的进度条1.回车换行2.缓冲区3.倒计时的实现 一、 Linux项目自动化构建工具make/Make… 文章目录 一、 Linux项目自动化构建工具make/Makefile1.make/makefile工作现象2.依赖关系与依赖方法3.如何清理4.为什么这里我们需要带上clean5.连续的make6.特殊符号 二、Linux下实现一个简单的进度条1.回车换行2.缓冲区3.倒计时的实现 一、 Linux项目自动化构建工具make/Makefile 1.make/makefile工作现象 make/makefile make是一条指令 makefile是一个当前目录下的文件 他们的用法如下 这样的话当我们直接输入make的时候自动执行下面的这条语句 如果我们还想要清理的话我们可以这样做 这样的话就可以将我们从繁杂的命令中解脱了 在上面的makefile文件中我们也可以是Makefile文件。 test.exe依赖于test.c 而下面的方法就是依赖方法 下面的clean不依赖于任何方法 2.依赖关系与依赖方法 什么是依赖关系和依赖方法呢 在下面的例子中 test依赖于test.c生成下面的一行就是依赖的方法即生成的具体细节 我们可以将其具体的写的详细一些 如下所示 当我们make的时候 它的执行逻辑是这样的先去执行第一个依赖关系但是第一个依赖关系所需要的被依赖的文件不存在我们继续去找看这个被依赖的文件能否被生成如此递归下去。最终我们在被依赖的位test.c的时候刚好找到了停了下来然后开始不断的往回执行 所以就有了上面的效果 而且即便我们将Makefile里面的内容给乱序了它依然按照它的标准去找 不影响最终结果 这个过程其实就是makefile的自动化推导 如果我们缺少了其中的一个依赖关系那么则会直接报错 3.如何清理 上面的依赖关系可以使得我们减少繁琐的命令。仅需一个make即可 那么清理其实也是比较麻烦的一件事情我们能否去完成呢当然是可以的 如下就完成了清理工作 这个clean是不需要依赖关系只需要一个方法即可 4.为什么这里我们需要带上clean 现在的问题是为什么我们执行清理的时候要带上clean呢而前面那个不需要呢 其实这个make是默认执行第一个依赖的。而前面连续调用多个依赖是因为要像栈一样的链式调用 我们也可以自己手动去调用它这个第一个依赖 如果我们将clean改为了第一个依赖那么就会默认执行clean 不过我们还是建议将生成可执行程序的那个依赖放在第一个 5.连续的make 我们现在将我们的makefile文件变为下面的样子 然后当我们连续的make的时候会显示如下 这是为什么呢 这其实是因为我们的make编译完成之后如果源代码没有被改变过那么就不会再次编译了因为根本没有必要 这里的目的就是为了提高编译效率 那么这里是怎么做到呢 这里一定是源文件形成可执行先有源文件才有可执行一般而言源文件的最近修改时间比可执行文件要老的 而如果我们更改了源文件历史上曾经还有可执行那么源文件的最近修改时间一定要比可执行程序要新 所以只需要比较可执行程序的最近修改时间和源文件的最近修改时间如果.exe新于.c源文件不需要重新编译.exe老于.c源文件需要重新编译 一般而言.exe .c的时间是不可能的。 那么如何证明前面所说的 在linux中有一条命令stat 它可以访问文件的一些时间 这里有三个时间 Access 最近访问时间 比如cat,vim都会去访问。这些都会更改这个时间 Modify : 最近的对文件内容修改的时间 文件 文件内容 文件属性 change : 最近修改文件属性时间 这三个时间我们也称为ACM时间 这三个时间很有可能是同时修改的 比如当对文件内容修改后由于访问了所以Access时间也被修改了而内容修改必然伴随着文件大小的改变所以最终文件属性也要被修改所以最终三个时间都被修改了 比如下面我们进去修改了一下就会导致全部时间被修改了 如下是我们修改文件的属性 上面的一切都符合我们的预期 不过在有的linux系统上我们的access时间不会被修改。 这是因为Access时间更新太频繁了。需要写到磁盘上由于频繁的访问外设会使得效率大大降低。所以现在的一些linux系统会根据modify和change的修改次数去进行修改以此减少开销。可以理解为里面有一个计数器的存在变相的提高效率 如果我们就想要修改那么我们可以使用touchtouch后面如果跟的是一个不存在的文件名就会创建一个文件如果是已经存在的会将该文件的所有时间全部更新 我们也可以定向的只改变一部分的 这里因为时间也是文件的属性所以Access会改变后change也会改变 所以现在我们知道了如何访问时间 不过问题还是之前的要比较两个的时间他们其实比较的就是Modify时间即文件内容的最近修改时间 将这些时间转化为时间戳然后比较时间戳的大小即可 我们可以看到明显.c文件要老于.exe文件所以无法再次编译 如果我们使用touch命令强行修改test.c的时间那么就可以再次编译了 所以上面的过程已经足以证明 make会根据源文件和目标文件的新旧判定是否需要重新执行依赖关系进行编译 所以make命令并不总是执行编译的 但是如果我们非要它每次都想要执行不要管什么时间了我们可以在makefile文件加上这句话 代表对于test这个依赖也不要管什么时间的问题了每次都要执行 这个.PHNOY就是伪目标修饰 不过我们这个一般不建议放在编译时候而是在清理的时候去修饰 修饰以后这个clean就变成了伪目标代表每次都执行 6.特殊符号 在makefile中有两个特殊符号 $指的是冒号左边的那部分 $^指的是冒号右边的那部分 所以我们的这个编译可以改为上面的写法了 不过我们也会发现我们上面的使用make的操作会使得这些命令回显出来如果我们不想要回显出来我们可以加上 二、Linux下实现一个简单的进度条 1.回车换行 回车和换行其实是两个概念 比如说在我们写作文的时候 当我们将一行写完了如果我们是从第二行的开头写起这其实叫做回车换行。 如果我们是直接这一行的正下方写起来这就是换行 所以回车换行是两个动作 即将光标挪到下方是换行将光标挪到开头这是回车 只不过我们c语言的\n一个就直接代表了回车换行如果我们拆开用的话就有他们各自的含义了这也解释了为什么我们显示器在打印的时候命名是换行但是确实在新一行的最开头了 即如果我们只想回车的话那就是\r,如果是回车换行就是\n 2.缓冲区 我们先看如下代码 注意sleep这个函数的头文件是unistd.h这个可以在man手册中查找到 这是我们的运行结果具体的现象是这样的先打印出hello world然后停顿两秒钟然后再显示我们下面的命令行 如果我们将这个代码改为这样子 那么会先执行1还是2呢 首先肯定是先执行1因为这是c语言的特性顺序执行 但是下面是我们的现象这个现象是先停顿两秒钟然后hello world和命令行同时出现 那么这是为什么呢 在我们sleep期间“hello world”在哪里呢它一定是被保存起来了 这里其实保存在了缓冲区 这个缓冲区就是由C语言维护的一段内存 这里其实就是因为没有刷因缓冲区才导致的 在C语言中会默认打开标准输入、标准输出显示器、stdout、标准错误三个流 如果我们想要刷新缓冲区那么就可以刷新输出流即可 下面这个函数可以刷新 所以我们可以将代码改成这样 这样的话hello world就会立刻出来然后个等待两秒后显示命令行 3.倒计时的实现 如果我们的代码是这样的那么最终的效果是一次性将987654321全部输出这是因为没有刷新缓冲区 但是我们显然不可以直接加上\n因为这样虽然会刷新缓冲区但是也换行了。没有倒计时是会换行的 如果我们的代码是这样的 那么最终的效果是这样的我们也知道这样也是不行的因为倒计时应该是覆盖原来的位置的 所以我们应该将倒计时写成这样的 这个\r代表回车即将光标移动到当前行的最开头。而我们加上%-2d的原因是因为10是一个两位数。如果不这样做就会出现10908070…这种数据因为它只会覆盖一个数据我们显示屏打印的只是一个字符一个字符的打印的。10是俩个字符我们后面只能覆盖一个字符 所以最终达到了我们的预期了
http://www.w-s-a.com/news/854814/

相关文章:

  • 东莞哪里能学建设网站网站备案值得吗
  • 中山 网站建设 骏域小程序开发课程
  • 北京网站建设成都微商城app官方下载
  • 网站开发用户登陆的安全wordpress 开发网站
  • 网站建设容易出现的问题四川seo关键词工具
  • 做外单网站有哪些内容服务好的南京网站建设
  • 阜阳微商城网站建设百度网站两两学一做心得体会
  • 建设银行积分网站观光农业规划设计
  • jsp项目个人网站开发用织梦做网站有什么公司会要
  • 和田网站制作无限动力网站
  • 长沙口碑好网站建设企业网站 需求
  • 哪个网站建设公司wordpress陌陌主题
  • 湖滨区建设局网站北京国际建设集团网站
  • 做服装团购有哪些网站wordpress 端口修改
  • 上海礼品定制网站响应式网站模版建站
  • 那种自行提取卡密的网站怎么做网站攻击
  • 洛阳免费网站建设qq是哪家公司开发的软件
  • 怎么做网站网页wordpress网址导航
  • 专业微信网站建设公司首选公司wordpress自动分类插件
  • 网站设计登录界面怎么做网站突然排名没了
  • wordpress 人物页面seo优化公司信
  • 高端网站建设报价网站建设需要硬件设备
  • 做国际物流在哪些网站找客户营销qq怎么申请
  • 网站做推广百度好还是360好科技厅
  • 网站开发工具排名万户网络建一个网站虽要多少钱
  • 用凡科做的网站要钱吗WordPress城市切换
  • 制作一个门户网站需要多少钱营销型网站特征
  • 手机网站 多html中国建设银行网站包头分行
  • 哪个网站做免费广告好招牌图片效果图设计制作
  • 网站建设优化服务机构苏州市做网站