动态库的问题

pengfangxu8 2011-05-18 10:50:27
我mysql库的位置在/usr/local/lib/mysql下,我在/etc/ld.so.conf文件加了/usr/local/lib/mysql,然后执行ldconfig,报ldconfig: /usr/lib/libmysqlclient.so.12 is not a symbolic link;

我用echo "/usr/local/lib/mysql" > /etc/ld.so.conf.d/usr-local-lib.conf,然后执行ldconfig,还是报ldconfig: /usr/lib/libmysqlclient.so.12 is not a symbolic link。

不知道怎么办了,然后我就执行export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/mysql/,程序能运行起来,但是肯不起作用,不知道为什么啦?
请教各位!谢谢!
...全文
179 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongshun89 2013-01-17
  • 打赏
  • 举报
回复
我也遇到同样的问题,不过我的是oracle数据库 没那个牛人知道怎么解决吗?oracle提供了一大对的动态库,如果不能添加路径进去,是不是每次都要建一个动态库的符号链接,这不坑爹吗
pengfangxu8 2011-05-18
  • 打赏
  • 举报
回复
谢谢您,我试试!
Myth_cn 2011-05-18
  • 打赏
  • 举报
回复
我觉得你还是将/usr/lib下的关于mysql的全部删掉,然后将/usr/local/lib/mysql加到ld.so.conf.d里面比较好
pengfangxu8 2011-05-18
  • 打赏
  • 举报
回复
我开始放在/usr/local/lib/mysql,不行,然后我就直接拷贝到/usr/lib/了,但是还是不行,不知道为什么?
Myth_cn 2011-05-18
  • 打赏
  • 举报
回复
/usr/lib还用加吗?如果你的动态库就在/usr/lib下,程序会自动搜索到该目录的,不用在ld.so.conf里面加。
你的mysql的库到底是在/usr/lib/mysql/下还是在/usr/lib/下?
如果在/usr/lib/mysql/下,将/usr/lib/mysql/添加在ld.so.conf里面,把/usr/lib下的mysql的库删掉;
如果在/usr/lib/下,什么也不用干
pengfangxu8 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 challenge99 的回复:]
不明白什么程序起来了,但是不起作用......
[/Quote]

我./可xxx执行文件时,报./xxxx error while loading shared libraries: libmysqlclient.so.12: cannot open shared object file: No such file or directory
这个错误,然后我就执行export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/,在进程中能看到这个程序起来但是不执行我想要的东东。
麻烦各位帮帮忙,谢谢!
pengfangxu8 2011-05-18
  • 打赏
  • 举报
回复
我刚才输错了,我mysql库的位置在/usr/lib/下,我在/etc/ld.so.conf文件加了/usr/lib/,然后执行ldconfig,报ldconfig: /usr/lib/libmysqlclient.so.12 is not a symbolic link;

还请各位帮帮忙
就想叫yoko 2011-05-18
  • 打赏
  • 举报
回复
is not a symbolic link
这是说符号链接有问题吧
重新ln一下
Myth_cn 2011-05-18
  • 打赏
  • 举报
回复
你的mysql库的位置在/usr/local/lib/mysql,/usr/lib中怎么会有libmysqlclient.so.12? ldconfig在两个位置都找到了你的mysql库,他就不知道该怎么办了.把/usr/lib/libmysqlclient.so.12删掉就行了
challenge99 2011-05-18
  • 打赏
  • 举报
回复
不明白什么程序起来了,但是不起作用......
Myth_cn 2011-05-18
  • 打赏
  • 举报
回复
libmysqlclient.so.12只是一个符号链接.首先你可以ldd program看看你的程序加载了哪些动态库,然后看看这些库是不是都能找到。按照你所说的我觉得可能的原因有两个:1.你安装的mysql的库有问题,没有创建libmysqlclient.so.12这个符号链接。这样的话你创建一个符号链接到真正的动态库(libmysqlclient.so.12.0.0)就可以了。2。你的动态库加载路径设置的有问题,确认下你的mysql的那些库所在的路径确实已经在ld.so.conf.d中设置了
pengfangxu8 2011-05-18
  • 打赏
  • 举报
回复
像您说的那样做了,./xxx的时候,报error while loading shared libraries: libmysqlclient.so.12: cannot open shared object file: No such file or directory错误,于是export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/mysql/,在进程中能看到这个程序在执行,但是不执行我想要的
lzfbird 2011-05-18
  • 打赏
  • 举报
回复
大概是找不到/usr/lib/libmysqlclient.so.12 这个符号链接,或者这个链接在别的地方了,先找到它再说

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧