Linux下找不到so文件的解决办法

http://www.cnblogs.com/xudong-bupt/p/3698294.html

如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形。

可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序):

其中的libjson_linux-gcc-4.6_libmt.so cannot found。

解决这个问题:

(1)在系统中查找这个文件(当然要保证系统中已经有这个.so文件,只是查找路径没有设置正确而已):

  sudo find / -name libjson_linux-gcc-4.6_libmt.so

  结果:/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6/libjson_linux-gcc-4.6_libmt.so

(2)将.so文件路径的目录添加到/etc/ld.so.conf

  sudo vim /etc/ld.so.conf

  文件末尾新添加一行,/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6

(3)使得修改生效

  sudo /sbin/ldconfig

这样就不会有那个找不对.so文件的错误啦。

参考:http://www.blogjava.net/zhyiwww/archive/2007/12/14/167827.html

原文地址:https://www.cnblogs.com/dhcn/p/9879065.html

时间: 2024-10-26 13:23:15

Linux下找不到so文件的解决办法的相关文章

linux下遇见mysql启动报2002错误解决办法

前言:目前问题解决了,但是仍不知道是什么原因造成的,在出现问题前安装uWSGI后,mysql就出现这个问题的,哪位大侠说说这是怎么回事? 正文:Linux 下 Mysql error 2002 错误解决 先查看 /etc/rc.d/init.d/mysqld status 查看mysql是否已经启动. 若mysql未启动,etc/init.d/mysqld start启动mysql 启动失败,八成是/etc/my.comf文件配置问题,然后mv /etc/my.cnf /tmp/my.cnf,再

Linux下yum出现no module named pycurl 解决办法

1.1 no module named pycurl 解决办法 下载curl:http://curl.haxx.se/download/curl-7.21.3.tar.gz tar xzf curl-7.21.3.tar.gz ./configure make make install 下载pycurl:http://pycurl.sourceforge.net/download/pycurl-7.19.0.tar.gz tar xzf pycurl-7.19.0.tar.gz cd pycur

Linux下cp -rf总是提示覆盖的解决办法

通常情况下使用cp -rf进行文件或者文件夹的管理时一般就不再提醒是否覆盖.然而在内网的一台机器上使用cp -rf却提示是否覆盖.难道和常用的命令不同? [[email protected] test]# cp -rf ./files/ ./bak/ cp:是否覆盖"./bak/files/test.txt"? cp:是否覆盖"./bak/files/hh.txt"? cp:是否覆盖".www.1.qixoo.com/bak/files/child/chi

linux下mysql的忘记root密码的解决办法

因为放寒假家里没有宽带,便很少上网,前几天用手机进入自己的个人博客时竟然返回数据库不能连接的错误,吓我一跳,网站肯定被人黑了,但转头一想我的博客就几篇破文章,谁这么无聊要黑,我并没有立刻去网上找解决的办法,因为手机不能连接服务器.今天打开电脑第一件事就是要解决这个问题,我确定我的mysql登录密码没有写错,但是不明白为什么一直报这样的错: Access denied for user 'root'@'localhost' (using password:YES) 索性我就改一下登录密码试试,在网

javah 命令找不到类文件的解决办法

用javac  生成class文件后. 假设class文件在源文件目录的包下,先将编译路径设置成源文件目录即可 set classpath=G:\eclipse java\HelloWorld\src 然后 javah -jni com.example.helloworld.JNITest 搞定

Linux下Tomcat 8080 端口被占用的解决办法

希望可以帮助你们 一,停止tomcat 并执行#netstat -an|grep 8080   查看发现有许多80端口进程在里面 二,执行# lsof -i :8080|grep -v "PID"|awk '{print "kill -9",$2}'|sh   杀死所有80端口进程 三,启动tomcat,问题解决. 同理  80端口和其他端口也一样

linux 下C语言编程库文件处理与Makefile编写

做开发快3年了,在linux下编译安装软件算是家常便饭了.就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题.看来还是像vs.codeblocks这样的ide把人弄蠢了.便下定决心一定要好好学习下如何在linux下纯手工gcc编译c项目.今天学了2点,一个是库文件处理,另一个是makefile编写. 学习的系统是centos6.6,编译升级的gcc4.8.2,明天写个博客总结下这回gcc安装的过程,每次都能学到些东西. gcc的编译过程 首先需要清楚gcc编译做了些什么 源文件

Linux下gcc编译生成动态链接库*.so文件并调用它 是转载的

动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助.1.动态库的编译 下面通过一个例子来介绍如何生成一个动态库.这里有一个头文件:so_test.h,三个.c文件:test_a.c.test_b.c.test_c.c,我们将这几个文件编译成一个动态库:libtest.so. //so_test.h:#include "stdio.h"

linux下使用math.h头文件-l与-L参数

遇到一个问题就是,c语言用到sqrt时,明明已包含math.h文件,却仍提示未定义,所以上网招答案的: gcc -lm 以下转自http://bbs.csdn.net/topics/330105678 ·-l参数和-L参数 -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供