未完成的研究

时间:2023-02-12 17:27:33

报错:error while loading shared libraries: libpcap.so.0.8: cannot open shared object file: No such file or directory

问题描述:报错找不到的库其实是安装了的,但是仍然报错找不到,

Q1,linux的.so文件是啥?

Linux下的.so文件是动态链接库,其功能和作用类似与windows下.dll文件。

Q2,while loading shared libraries 系统会去哪loading?

百度有人说,系统的默认搜索依赖库路径为/lib,和/usr/lib,和/usr/local/lib,

Q3,为什么No such file or directory?

find / -name libpcap.so.0.8  无结果

find / -name libpcap.so   发现了/usr/lib64/libpcap.so

待研究,,

Q4,libpcap.so和libpcap.so.0.8的区别

 

 

  

知识点

一、.so和.a

.so后缀的文件是linux下的动态链接库。动态函数库在编译的时候没有被编译进目标代码中,程序执行到相关函数时才调用它。由于函数库没有被整合进程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供依赖的库。 

.a后缀的文件是linux下的静态链接库。静态函数库在编译的时候被整合进了目标代码里,成为了程序的一部分。

.so库的好处:1、不同的程序可以共享所需要的同一个库的某几个函数。2、执行过程中有需求才调用某一段代码,大大节省系统资源。3、将一些程序升级变得简单,升级.so库即可升级程序。

 

二、6个文件目录的区别:/lib, /usr/lib, /usr/local/lib,  /lib64, /usr/lib64, /usr/local/lib64

/lib存放最基本的用于启动系统和执行root文件系统的命令(/bin和/sbin中的二进制文件)的动态库。

/usr/lib存放/usr/bin和/usr/sbin中二进制文件的库

/usr/local/lib存放用于用户程序或安装包的库。

lib64存放内容同上。

百度有人说,lib64的库不是架构独立的,lib的库是架构独立的。/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的.