Linux程序设计读书笔记:第一章 入门知识
1.1 什么是UNIX操作系统
1.2 什么是Linux操作系统
- Linux Tovalds在赫尔辛基大学开发出来的
1.3 发行版本
1.4 GNU项目和自由软件基金会
1.5 为Linux系统设计程序
1.6 UNIX程序
- unix下应用程序:可执行文件 和 脚本文件
注: 脚本文件的指令需要由另外一个程序(如解释器)来执行
- unix不要求可执行文件或脚本程序具备某种特定的文件名或者某种特定的扩展名,而是由文件的系统属性决定的。
- PATH环境变量,正如很多人所知道的$PATH环境变量里存着一张目录列表,当用户要执行某一程序时,Unix系统就会按照列表中的内容去查找该程序的位置。当程序名前不带点斜线 . / 时$PATH就会起作用
1.7 获得帮助
- man 和 info
1.8 程序开发系统的预备知识
1.8.1 程序
1.8.2 头文件
- 那些依赖于所运行的UNIX和Linux操作系统特定版本的头文件一般可以在/usr/include/sys或/usr/include/linux子目录里找到
- 在调用C语言编译器的时候可以通过给出“-I”标志来引用保存在下级子目录或者非标准位置的头文件,如$ gcc -I /usr/openwin/include fred.c
- 用grep命令来查找含有某些特定定义与函数声明的头文件是很方便的。如先进入/usr/include/子目录,然后用grep命令,如$ grep EXIT_ *.h ,grep命令会在该子目录里所有以.h结尾的文件里查找字符串"EXIT_"。
1.8.3 库文件
1.8.4 静态库
- 编译器和链接程序负责把程序代码和库函数结合在一起成为一个独立的可执行程序。如果使用的不是标准的C语言运行库而是某个扩展库,就必须用"-I"选项指定它。静态库也叫档案(archive),它们的文件名按惯例都以".a"结尾。
1.8.5 共享库
- 静态库在程序本身里面有很多同样的拷贝,会消耗大量宝贵的内存和硬盘空间
- 当编译好的程序被加载到内存中准备执行的时候,函数的调用线索被解析,程序向共享库发出调用,共享库只在必要的时候才被加载到内存
1.9 UNIX系统中程序设计的特点和原则
1.9.1 简单性
1.9.2 重点性
1.9.3 可反复使用的程序组件
1.9.4 过滤器
1.9.5 开放的文件格式
1.9.6 灵活适应性
1.10 本章总结