您的位置:首页 > 运维架构 > Linux

Linux程序设计笔记 第一章

2012-05-08 10:42 169 查看
严格来说,UNIX是由OpenGroup(开放组织)管理的一个商标,它指的是一种遵循特定规范的计算机操作系统。这个规范也成为单一UNIX规范(TheSingle
UNIXSpecitication),它定义了所有必须的UNIX操作系统函数名称、接口和行为。这个规范在很大程度上是早起由IEEE开发的P1003或POSIX规范的超集。

Linux应用程序表现为两种特殊类型的文件:可执行文件和脚本文件。可执行文件是计算机可以直接运行的程序。脚本文件是一组指令的集合,这些指令将由另一个程序(即解释器)来执行,它们相当于Windows中的.bat文件、.cmd文件或解释执行的BASIC程序。

如果PATH变量中包含的其中一个目录包含另一个与你需要执行的程序同名的程序,shell就会执行那个程序。如果PATH中这样的目录出现在你需要执行的程序所在的目录之前,这种情况也会发生。为了避免这种潜在的问题,你可以在程序名前加上一个”./”。它特别只是shell去执行当前目录下给定名称的程序。

shell会在一组指定的目录路径下按照你给出的程序名搜索与之同名的文件。搜索的目录路径存储在shell变量PATH里

PATH通常包含如下一些存储系统程序的标准路径

/bin
二进制文件目录,用于存放启动系统时用到的程序
/ust/bin
用户二进制文件目,用于存放用户使用的标准程序
/usr/local/bin
本地二进制文件目录,用于存放软件安装的程序
Linux和UNIX都使用冒号(:)分隔PATH变量里的条目,且Linux使用正斜线(/)分隔文件名里的目录名

对C语言来说,头文件几乎总是位于/usr/include目录及其子目录中。那些依赖于特定Linux版本的头文件通常可在目录/usr/include/sys和/usr/include/linux中找到

用grep命令可搜索包含某些特定定义和函数原型的头文件。例如grepEXIT_
*.h 会在当前目录下所有以.h结尾的文件中搜索包含了EXIT_开头的定义

库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。标准系统库文件一般存储在/lib和/ust/lib目录中。库文件的名字总是以lib开头,随后的部分指明这是什么库。文件名的最后部分以.开始,然后给出库文件的类型

.a
代表传统的静态函数库
.so
代表共享函数库

函数库:最简单的形式是一组处于“装备好使用”状态的目标文件。当程序需要使用函数库中的某个函数时,它包含一个声明该函数的头文件。编译器和链接器负责将程序代码和函数库结合在一起以组成一个单独的可执行文件。

静态库:也称为归档文件,文件名以.a结尾。可以使用ar程序和gcc–c命令对函数分别进行编译。详细参看课本P27

共享库:共享库保存位置与静态库一样,但共享库又不同的文件名后缀。当一个程序使用共享库时,它的链接方式是这样的:程序本身不再包含函数代码,而是引用运行时可访问的共享代码。当编译好的程序被装载到内存中执行时,函数引用被解析并产生对共享库的调用,如果有必要,共享库才被加载到内存中。通过这种方法,系统可以只保留共享库的一份副本供许多应用程序同时使用,并且在磁盘上也仅保存一份。另一个好处是共享库的更新可以独立于依赖它的应用程序。

共享库在许多方面类似于Windows中使用的动态链接库。.so库对应于.dll文件,它们都是在程序运行时加载,而.a库类似于.lib文件,它们都包含在可执行程序中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: