说到这个LIB文件,先从一个小故障说起。某日开发说,一台测试用虚机可以PING通SSH不能连了。运维同学就赶紧去查,SSHD_CONFIG配置文件都正确啊,一点错误都没有,那为什么呢?
测试下,不管连自己还是其他机,都是报错
这里注意看,提示你有个libcom_err.so.2共享库文件找不到。
询问开发,才了解他们测试一个软件,意外删除了某个库文件。
那么在正常的相同虚机的机器查看下,再和出错的虚机比对下,发现少了2个库文件
挂载系统光盘或从正常的虚机上把这个两个文件拷贝过来,放到lib64下就可以了
再试正常了
这个小故障很容易解决,那么你怎么理解Linux中的库文件呢?学习下也不误工作。
Linux下的库文件分为共享库和静态库两大类,它们两者的差别仅在程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。
Linux的库一般在/lib 或/usr/lib 目 录下,如果是64位的系统则会有lib64目录。lib是库(Library)的英文缩写,它主要存放系统的链接库文件,没有该目录则系统就无法正常运行。/lib目录中存储着程序运行时使用的共享库。通过共享库,许多程序可以重复使用相同的代码,并且这些库可以存储在一个公共的位置上,因此能减小运行程序的大小。这个目录包含程序在链接时使用的 各种库。
库的知识
1.库的命名
库的命名比较简单,第一个特点是所有的库以lib开头,GCC命令在在-l选项所指定的文件名前会自动加入lib。
第二个特点文件名以.a结尾的库是静态库。
第三个特点文件名是.so的库为共享库(共享库是在运行的时候动态加载的 )。默认情况下,GCC在链接时优先使用共享库,只有当共享库不存在时才考虑使用静态库。
2、库的编号
库的编号格式如下:
library_name .major.num .minor_.min .pathch_num
例如,笔者Red Hat Linux 9.0的GUN数据库是libgdbm.so.0.0.2,详细表述如下:
◆library_name是libc.so(标准C库);
◆major_num是2(主版本号);
◆minor_.min是0(次版本号);
◆pathch_num是0(补丁级别号又称发行号)。
完整PDF文档可以到Linux公社资源站下载:
------------------------------------------分割线------------------------------------------
具体下载目录在 /2017年资料/5月/4日/Linux下的lib文件故障解决实例/
------------------------------------------分割线------------------------------------------