关于程序的组成部分:

Linux程序的组成部分:
一个可执行程序一般有:
二进制文件(程序或命令)
默认位置:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
配置文件
默认位置:/etc/, /usr/local/etc ...
共享库
默认位置:/lib, /usr/lib, /usr/local/lib
帮助文件
默认位置:/usr/share/doc, /usr/share/man
头文件
默认位置:/usr/include, /usr/local/include
 
配置文件:程序运行的很多特征是靠变量定义的,这些变量定义后,为了下次启动依然有效,那我们会提供配置文件,来设定某些程序的额外属性和特征,这就是配置文件存在的意义。
共享库:如果某程序的某些功能可能会被其他程序调用的话,那么就需要把这些公用的公共模块,我们把这些公共模块存放在特定的地方叫做共享库;共享库分为两类,一类是公用的公共模块,第二类是专门让程序员开发用到的一些开发功能的调用接口,所以我们也简单的叫共享库为运行库和开发库
帮助文档:。。。。
头文件:为了其他程序调用某程序的某功能,就需要一个说明文档来说明库中每个函数的函数名、参数,参数类型、返回值类型等。。那么这个说明文档就叫做头文件,这些头文件我们称为开发库,其默认存放位置:/usr/inlcude
 
eg:httpd: /usr/local/apache/bin, /usr/local/apache/sbin, /usr/local/apache/conf, /usr/local/apache/lib,/usr/local/apache/man
如果一个应用程序在运行的时候要依赖某个共享库的话,此程序要运行就首先要加载这个共享库
现以httpd为例,如果安装完httpd后,其库安装在/usr/local/apache/lib下,那别的应用程序依赖此库该怎么实现呢?
我们系统上的共享库文件在操作系统启动的时候已经就被加载到缓存池当中,便于其他程序加载的时候可以快速的进行查找,那么我们后面加载进来的库,别的程序在调用的时候,可能就会找不到,并且如果放在不是标准路径下的库,我们的系统也寻找不到,通常系统只到/lib, /usr/lib中寻找,如果想被系统找到我们安装在特定路径下的库,那么我们系统有一个配置文件专门用来查找库文件使用时候用来的路径的,“etc/ld.so.conf”即为共享库装载工具的配置文件。在配置文件中所指定查找库文件路径的命令叫ldconfig。当配置完etc/ld.so.conf.d/*conf后,使用命令“ldconfig -v”重新执行加载此配置文件到缓存当中。缓存文件的位置:/etc/ld.so.cache
 
man命令的配置文件:/etc/man.config,在配置文件中,有一个关键的指令叫做MANPATH,用于专门指定man到指定的路径下寻找手册页。
 
对于第三方的头文件而言,如果想被别的程序寻到,那么只有创建链接,还以httpd为例:ln -sv /usr/local/httpd/include /usr/include/httpd
 
总结:事实上,我们向我们的Linux操作系统上安装软件的过程就是向这些路径下去分散、分发每个程序的各个组成部分的。