经过./configure -> make (->make install)这样一个过程之后,我们得到了一个执行文件。
但是这一切都还没结束,一些大型源码的执行文件一般会依赖于很多动态库(也就是linux中的.so结尾的文件, .a结尾的为静态库),这些动态库有可能不在,但编译依然能通过,而导致的后果当然是执行文件无法正常运行,一般会报错说cannot find ***.so。
./simph323: error while loading shared libraries: libh323_linux_arm_.so.1.26.9: cannot open shared object file: No such file or directory
这种情况下,我们需要找到可执行文件所依赖而又缺失的动态库(.so),具体的方法如下:
首先需要找到目标可执行文件依赖于什么库,缺失了什么库。我们可以使用以下命令:
$ ldd 目标可执行文件
如图所示,所有依赖的动态库都会列出来,而找不到的动态库有哪些都一目了然。得到动态库的名称之后,我们需要把它加载到环境变量中:
方法1、将这个动态库的绝对路径添加到 /etc/ld.so.conf中
$sudo vim /etc/ld.so.conf (按照格式)
$sudo ldconfig
即可生效。
对于动态库的绝对路径如何寻找的问题,
如果ubuntu是图形界面版的话,可以直接用files的文件搜索功能
这样就能找到这个动态库所在的目录了。
如果没有图形界面,可以用find命令:
$find -name ***.so
也可得到绝对路径。
方法2、添加动态库路径到环境变量。
也是基于方法一得到的绝对路径实现的
export LD_LIBRARY_PATH=/home/linux/h323plus/h323core/lib/:$LD_LIBRARY_PATH
也可以写到/etc/profile中。
操作完可以用echo $LD_LIBRARY_PATH查看。
方法3、待更。。。