代码参考自:Unix环境高级编程(第三版)

顺便得意地说下,网上虽然找不到第三版的电子书,但是我通过模拟器的方式在电脑上显示出的“当当云阅读”的书籍查看效果,其实基本和电子书一致。

第一,并没有支持盗版书籍;第二,我其实也购买了这本书的纸质书。

好了说正事,光是实现ftw的效果,研究这部分的实现代码就大概花了我将近4天的休息时间,其实挺累的。这次的对于Unix学习,我并不打算光是知道解决一个问题该采用什么样的手段,我更倾向于去了解为什么通过这样的方式能解决这个问题。

其中,在一定程度上了解了makefile的工作方式,这部分内容参考的是陈皓在15年前写的博客,感慨万千。十五年前写的博客,但是博客下面的评论却都是近年的,可见这个系列写的水平。我大致翻了一下,当时他总共分了14篇博客来讲相关的内容,我这里也不想大篇幅的拷贝里面的内容,所以就贴个链接,文章本身的下一页的超链接已经失效了,但是你可以在置顶评论中看到下一篇的链接地址。慢慢看,好东西!看到第五篇我感觉就目前的水平已经够用了,后面有时间再继续挖掘。

跟我一起写 Makefile(一)
读完这部分内容之后,对于gcc怎么编译C程序就有了一定程度的了解了,但是对于.c .h 以及include引入的方式还存在一定的困惑,所以就需要在遇到类似下面这样的问题的时候,在一定程度上进一步了解怎么避免这样的问题的发生。

$ gcc codelist8-7.c codelist15-3.c -o 8-7
/tmp/ccMDAwpv.o: In function `err_ret':
codelist15-3.c:(.text+0x0): multiple definition of `err_ret'
/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x0): first defined here
/tmp/ccMDAwpv.o: In function `err_sys':
codelist15-3.c:(.text+0xa9): multiple definition of `err_sys'
/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0xa9): first defined here
/tmp/ccMDAwpv.o: In function `err_exit':
codelist15-3.c:(.text+0x15a): multiple definition of `err_exit'
/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x15a): first defined here
/tmp/ccMDAwpv.o: In function `err_dump':
codelist15-3.c:(.text+0x209): multiple definition of `err_dump'
/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x209): first defined here
/tmp/ccMDAwpv.o: In function `err_msg':
codelist15-3.c:(.text+0x2b5): multiple definition of `err_msg'
/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x2b5): first defined here
/tmp/ccMDAwpv.o: In function `err_quit':
codelist15-3.c:(.text+0x360): multiple definition of `err_quit'
/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x360): first defined here
collect2: ld 返回 1

在这里我所参考的博客是:multiple definition of `err_sys' 《UNIX环境高级编程》和细节1:文件包含使用条件编译解决多定义错误,这篇文章写的同样也很棒,让人有一种豁然开朗的感觉。

说起来,到底什么时候,我才能成长到百度已经不能解决我的问题的水平了呢?每次当我搜索我的问题时,百度已经足矣,真的让我感觉自己做的事情,仅仅是不断地修复别人已经修补过几千几万次的轮胎而已。

开发日记-20190911 关键词 C代码实现shell ftw命令相关推荐

  1. 开发日记-20190513 关键词 汇编语言(六)

    其实,每次当我写一篇开发日记,并且这篇开发日记并没有关键词,或者我并没有和你扯东扯西的情况下... 这意味着我这天偷懒了= = ;AddTwo.asm --两个32位整数相加.386.model fl ...

  2. 开发日记-20190328 关键词 利用eolinker一键快速生成API接口文档

    今天感觉效率真的很低= =各个层面的,apk发布到现场发现出现了问题,所以一个下午都在忙着解决现场出现的问题,领导一直打电话询问进度,午觉也没有睡所以今天预计的很多计划都处于停滞状态,像昨天规划的今天 ...

  3. 开发日记-20190417 关键词 代码之间耦合度的一刀两断 (思路篇)

    就目前而言,就我的理解,为什么要设计结构清晰的代码呢,因为结构清晰的代码往往耦合度很低,那为什么要降低代码之间的耦合度呢,当然是因为程序员是一种喜爱偷懒和害怕犯无意义错误的一种生物,那么该怎么办呢,无 ...

  4. 开发日记-20190516 关键词 MVVM-代码浏览结束

    今天生病了呢=+=.其实今天预计将所有的MVVM都做完的,但是就结果而言,并没有想象中来的简单.嘛嘛嘛,不过基本的想法也已经掌握了,感觉Kotlin真的挺不错的,不过仅仅是作为一门开发语言而言.但是作 ...

  5. 开发日记-20190425 关键词 gradle基础学习 7年之约 启动篇

    以前,面试过一家外企,面试我的技术主管真的很友善,完全是以一种技术交流的态度和我进行交流.说真的,那时候,我一度以为我已经大半只脚踏入了这家企业的大门,他们的hr和我说,我们一个星期内将会给你答复.但 ...

  6. 开发日记-201909024 关键词 linux基础

    这两个月出差,8点下班,所以需要在这个点之前,把日记写好,事情一多,其实就没有多少时间归纳了. 所以就以转载为主,不过这些转载内容都是我个人阅读完的内容,还是很有信心的. 用linux制作iso镜像文 ...

  7. 开发日记-20190718 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 11

    E5.1 什么是umask?创建一个umask,对于属组或者其他人什么权限都不给. 用户可以使用内建的shell命令umask来影响分配给新创建文件的默认权限.umask用一个三位数字的八进制形式来指 ...

  8. 开发日记-20190708 关键词 读书笔记 《Perl语言入门》Day 5

    Preface 进度两章,看来搞定这本书真的是需要话一些时间的.十天左右吧.怪我没弄实体书呗. Content 我们已见过并用过一些内置的系统函数,像chomp,reverse和print等. 但是, ...

  9. 开发日记-20190628 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 5

    Content 在初始化脚本运行后,系统就是完全运行的系统了,不过现在用户还不能登录进来.为了监听某个特定中断(包括控制台)上接受用户登录,必须有一个getty进程监听终端或者控制台. 多终端操作系统 ...

最新文章

  1. 错误时自动退出bash shell脚本[重复]
  2. SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  3. Linux下arp用法
  4. js代码赋值触发select控件的onchange事件
  5. iOS开发- 蓝牙后台接收数据(BLE4.0)
  6. @ResponseBody//该注解会将返回值转为json格式并放到响应体中返回到前台
  7. Win11任务栏图标重叠怎么办 Win11任务栏图标重叠的解决方法
  8. 微课|中学生可以这样学Python(1.5节):标准库与扩展库对象的导入
  9. 呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!!
  10. Swarm Mode服务管理
  11. Visual Basic 6.0精简版下载地址
  12. 计算机类毕业论文中期检查,计算机类毕业论文中期检查表
  13. BetterZip 4.2.4 激活版下载安装– Mac上最快速的压缩工具
  14. ftp服务器文件无法删除,ftp服务器文件删除
  15. 网络应用程序的架构:C/S架构、B/S架构的区别与优缺点
  16. 怎么克隆计算机的mac,MAC地址克隆方法
  17. 格拉姆矩阵(Gram Matrix)
  18. 如何将录音m4a转换为mp3格式?
  19. Ubuntu使用自带的Liboffice Draw去除PDF水印
  20. python画图,坐标轴问题

热门文章

  1. uniapp android原生,在uni-app项目中集成Android原生工程
  2. php的常量和变量,php的常量和变量
  3. Ubuntu安装rabbitMQ及单机版rabbitMQ集群配置
  4. g++编译后运行时无法链接动态库的解决方法
  5. Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用
  6. tomcat启动慢_Hack下mongodb jdbc driver启动慢
  7. 计算机系统的架构,计算机系统结构 (二) 计算机主要系统构成
  8. java兔子_JAVA经典兔子问题
  9. 奠定了整个计算机科学的基础是什么,冯 诺依曼对计算机科学发展所作的贡献是什么...
  10. git报错: LF will be replaced by CRLF