当前位置: 首页 > 科技观察

解决Linux动态库依赖问题的三种实用方法

时间:2023-03-22 17:31:15 科技观察

概述在编译安装某个软件时,如果自定义了一些安装目录,安装后可能会提示找不到动态库。这是想法和三个解决方案。一般来说,程序所依赖的动态库已经通过make命令编译好了,动态库已经通过makeinstall命令安装到系统的某个路径下。是否找到动态库取决于该路径是否包含在系统默认的动态库搜索路径中。如果没有,会提示找不到动态库。下面三种方法是在前面分析的基础上解决的。方法一:修改LD_LIBRARY_PATH环境变量特点:该方法主要处理临时动态库加载。修改LD_LIBRARY_PATH环境变量后,只能对当前用户生效。LD_LIBRARY_PATH的作用:该环境变量用于在程序加载和运行过程中查找动态链接库时指定系统默认路径以外的路径。请注意,LD_LIBRARY_PATH中指定的路径将在系统默认路径之前被搜索。具体步骤:1.找到动态库所在路径:sudofind/-name"[动态库名称]"2.打开~/.bash_profile文件3.在文件最后一行添加:exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:[动态库所在的绝对路径]4.source~/.bash_profile方法二:修改/etc/ld.so.conf配置文件特点:对所有用户有效。不是每个操作系统都有这个配置文件,但是Ubuntu系统有。/etc/ld.so.conf的作用:记录程序运行时加载和查找动态链接库时的路径。具体步骤:1、找到动态库所在路径:sudofind/-name"[动态库名称]"2、打开/etc/ld.so.conf文件:sudovi/etc/ld.so。conf3.在***一行中添加动态库的绝对路径4.重新加载/etc/ld.so.conf文件:sudoldconfig-v方法三:创建动态库的软链接(推荐)特点:使其对所有用户都有效;而且通用,只要是linux类型的操作系统都会去/usr/lib目录下找动态库。具体步骤:1、找到动态库所在路径:sudofind/-name"[动态库名称]"2、创建动态库软链接:ln-s[动态库][待创建的软链接]注意:1.创建使用软链接时,必须使用绝对路径。如果使用相对路径,则只会在当前路径有效,其他路径中的软链接是找不到的。2、不建议使用cp方式代替ln-s方式。原因:动态库升级时,可能是动态库的版本不一致,或者链接的是旧版本。上面主要讲了三种创建动态库的方法,其中ln-s方法比较常用,有空可以测试一下。