error while loading shared libraries

来源:互联网 发布:上海爱回收java 编辑:程序博客网 时间:2024/04/29 16:48

在动态库进行加载的时候,会提示error while loading shared libraries这种信息,虽然编译通过了但是运行时却找不到动态库,根本原因在于:
虽然链接时链接器(dynamic linker)找到了动态库,但动态加载器(dynamic loader, 一般是/lib/ld-Linux.so.2)却没找到。
Linux为我们提供了两种解决方法:
1.可以把当前路径加入 /etc/ld.so.conf中然后运行ldconfig,或者以当前路径为参数运行ldconfig(要有root权限才行)。
2.把当前路径加入环境变量LD_LIBRARY_PATH中
当然,如果你觉得不会引起混乱的话,可以直接把该库拷入/lib,/usr/lib/等位置(无可避免,这样做也要有权限),这样链接器和加载器就都可以准确的找到该库了。
我们采用第二种方法:
[leo@leo test]$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

如果你知道你所需要的库文件所在的路径,亦可以在编译的时候加上这段代码:

gcc -o xxx xxx.c -L. -lcrypt -Wl,rpath=./openssl

-Wl:l表示link
-rpath:r表示run
意思是在连接运行的时候到openssl目录中去查找库文件。

0 0
原创粉丝点击