**Linux应用程序表现为两种特殊类型的文件:**可执行文件和脚本文件。可执行文件是计算机可以直接执行的程序,它们相当于Windows中的.exe文件。脚本文件是一组指令的集合,这些指令将由另一个程序(即解释器)来执行,它们相当于Windows中的.bat文件,.cmd文件或解释执行的BASIC程序。
当登录进Linux系统时,你与一个shell程序(通常是bash)进行交互,它像Windows中的命令提示窗口一样进行程序。它在一组指定的目录路径下按照你给出的程序名搜索与之同名的文件。搜索的目录存储在shell变量的PATH里,这一点和Windows也很类似。
/bin:二进制文件目录,用于存放启动系统时用到的程序。
/usr/bin:用户二进制文件目录,用于存放用户使用的标准程序。
/usr/local/bin:本地二进制文件目录,用于存放软件安装的程序。
系统管理员(例如root用户)登陆后使用的PATH变量可能还包括存放系统管理的程序目录,如/sbin和/usr/sbin
从PATH中删除目录并不是一个好主意,除非你确信了解这么做的后果。
**头文件:**用C语言及其他语言进行程序设计时,你需要用头文件来提供对常量的定义和对系统函数及库函数的调用声明。
**库文件:库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。
静态库:**函数库是最简单的形式是一组“准备好使用”状态的目标文件。当程序需要使用函数库中的某个函数时,它包含一个声明该函数的头文件。编译器和链接器负责将程序代码和函数库结合在一起以组成一个单独的可执行文件。你必须使用-L选项指明标准C语言运行库外还需要使用的库。
静态库,也称为归档文件,按惯例它们的文件名都以.a结尾。
你可以很容易地创建和维护自己的静态库,只要使用ar程序和gcc –c命令对函数分别进行编译。你应该尽可能把函数分别保存到不同的源文件中。如果函数需要访问公共数据,你可以把它们放在一个源文件中,并使用该文件中声明的静态变量。
共享库:静态库的一个缺点是,当你同时运行许多应用程序并且他们都使用来自同一个函数库的函数时,内存中就会有同一个函数的多份副本,而且在程序文件自身中也有很多同样的副本。这将消耗大量宝贵的内存和磁盘空间。
当一个程序使用共享库时,它的链接方式是这样的:程序本身不再包含函数代码,而是引用运行时可访问的共享代码。当编译好的程序被装载到内存中执行时,函数引用被解析并产生对共享库的调用,如果有必要,共享库才被加载到内存当中。
通过这种方法,系统可以只保留共享库的一份副本供许多应用程序同时使用,并且在磁盘上也仅保存一份。另一个好处是共享库的更新可以独立于依赖它的应用程序。
本文深入探讨了Linux系统中的程序表现形式,包括可执行文件和脚本文件的区别,以及它们与Windows系统的对应关系。文章还详细介绍了Linux系统中各种二进制文件目录的作用,如/bin、/usr/bin和/usr/local/bin,以及系统管理员使用的额外目录。此外,还讨论了头文件和库文件的重要性,特别是静态库和共享库的特点与优缺点。

被折叠的 条评论
为什么被折叠?



