[求助]动态链接库问题

lalio77 2011-04-26 04:49:34
程序编译好后,在运行的时候弹出错误:/usr/lib64/libstdc++.so.6:version 'GLIBCXX_3.4.9' not found
按照网上的方法,我下载的libstdc++.so.6.0.10,由于没有权限直接操作/usr/lib64/这个目录,所以在自己创建的目录下建立了一个新的软链接:目录1/libstdc++.so.6 -> .../libstdc++.so.6.0.10,然后把目录1添加到LD_LIBRARY_PATH中,重新编译后,运行还是那个错误。请教一下这个问题要怎么解决?
...全文
300 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
pony 2011-05-17
  • 打赏
  • 举报
回复
这样看可不可以。mv libstdc++.so.6 libstdc++.so.6_bak
/usr/lib64/libstdc++.so.6.0.10
如果还报同样的错误,说明libstdc++.so.6.0.10与你程序运行需要的C++的库版本不匹配啊。
察看系统g++版本,g++ -v察看g++版本,下载相应的库或将其同样的库拷贝到/usr/lib64/重新编译Qt即可。
fish_phenix 2011-05-04
  • 打赏
  • 举报
回复
你要看看:/usr/lib64/libstdc++.so.6
这个绝对路径是在哪儿写的,如果是在makefile里写的,你找到这个file修改下里面的路径就可以了


如果这个路径你改不了,那就没办法了
lalio77 2011-04-28
  • 打赏
  • 举报
回复
这两天先放着,五一来看看这个问题···多谢楼上各位的耐心解答~~
zaghost 2011-04-27
  • 打赏
  • 举报
回复
用的是绝对路径吧 只能放在/usr/lib64/下面
lalio77 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 justkk 的回复:]

程序怎么编译的
gcc a.c -Lpath -llib
[/Quote]
下过来的是源码,里面有CMake相关文件,所以直接用cmake(boost_system那个错误就是发生在这一步),然后make
justkk 2011-04-27
  • 打赏
  • 举报
回复
程序怎么编译的
gcc a.c -Lpath -llib
lalio77 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 zaghost 的回复:]

引用 26 楼 lalio77 的回复:
引用 22 楼 zaghost 的回复:

用的是绝对路径吧 只能放在/usr/lib64/下面


不懂。。。编译链接的时候不是会找环境变量里面设置的路径么?

编译与动态链接库的位置没有关系的,运行的时候才会去找动态链接库的位置
如果动态链接库的位置是相当路径,那就找环境变量里面设置的路径,绝对路径就与环境变量没关系了
[/Quote]

什么东西决定一个程序运行时动态链接的库是相对路径还是绝对路径呢?怎么知道动态链接库的位置是相对路径还是绝对路径?是系统决定的还是CMakefile这些文件设置的?
zaghost 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 lalio77 的回复:]
引用 22 楼 zaghost 的回复:

用的是绝对路径吧 只能放在/usr/lib64/下面


不懂。。。编译链接的时候不是会找环境变量里面设置的路径么?
[/Quote]
编译与动态链接库的位置没有关系的,运行的时候才会去找动态链接库的位置
如果动态链接库的位置是相当路径,那就找环境变量里面设置的路径,绝对路径就与环境变量没关系了
zaghost 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 wenxy1 的回复:]
sudo export试试,还不行,求助root用户!

软件研发者没权限,还怎么玩linux,呵呵,我一直用root用户进行操作。
[/Quote]
sudo export只改变当前环境吧,退出了就无效了
lalio77 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 zaghost 的回复:]

用的是绝对路径吧 只能放在/usr/lib64/下面
[/Quote]

不懂。。。编译链接的时候不是会找环境变量里面设置的路径么?
lalio77 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 justkk 的回复:]

import LD_LIBRARY_PATH="/home/xwwang/lib:$LD_LIBRARY_PATH

import ??
不是export 吗?试试
export LD_LIBRARY_PATH=/home/xwwang/lib:$LD_LIBRARY_PATH
[/Quote]
额。。是我不小心打错了,是export,我编辑bash_profile文件的时候也是用的export。。
Wenxy1 2011-04-27
  • 打赏
  • 举报
回复
sudo export试试,还不行,求助root用户!

软件研发者没权限,还怎么玩linux,呵呵,我一直用root用户进行操作。
justkk 2011-04-27
  • 打赏
  • 举报
回复
import LD_LIBRARY_PATH="/home/xwwang/lib:$LD_LIBRARY_PATH

import ??
不是export 吗?试试
export LD_LIBRARY_PATH=/home/xwwang/lib:$LD_LIBRARY_PATH
piedgogo 2011-04-27
  • 打赏
  • 举报
回复
有些包它自己会编译一些库出来,如果做的不好的话,它是不会把包拷到目标路径下的。

第一,好好读下包里的Read Me,或是Install之类的。
第二,找找编译完是不是有Lib之类的目录,下面有你要的库文件。

如果有找到的话,它提示缺哪个包,你就拷那个到系统lib目录下就好。
piedgogo 2011-04-27
  • 打赏
  • 举报
回复
一般要版本号什么都都对得上才能用,linux不想windows只有三四个版本。
lalio77 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 feiyinzilgd 的回复:]
木有权限。搞毛啊。。

程序员都没权限。。
[/Quote]
这么说是没救了?。。。
lalio77 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 steptodream 的回复:]

source ~/.bash_profile
-------
这只是让你自己设定文件里的环境变量生效的

ldconfig
---------
这个会影响整个系统动态库的加载 这种级别的操作 普通用户肯定是没有权限的
[/Quote]
就是不能影响整个系统的状态所以才木有权限的,我只要自己登录的时候是我设定的环境变量就够了,不管其他用户
steptodream 2011-04-26
  • 打赏
  • 举报
回复
source ~/.bash_profile
-------
这只是让你自己设定文件里的环境变量生效的

ldconfig
---------
这个会影响整个系统动态库的加载 这种级别的操作 普通用户肯定是没有权限的
谭海燕 2011-04-26
  • 打赏
  • 举报
回复


木有权限。搞毛啊。。

程序员都没权限。。
steptodream 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lalio77 的回复:]

引用 14 楼 feiyinzilgd 的回复:

添加lib path之后,要ldconfig一下

conmmand not found!!!
本机上试了一下可以使用,但是也要sudo权限啊。。。现在的问题发生在一台公有大型机上,我木有sudo权限~~

一定要这个命令么?我还以为source ~/.bash_profile是和ldconfig一样的功能呢~~
[/Quote]
因为这个命令是root才可以执行的 所以你需要sudo
ldconfig作用是动态装入程序所需的连接和缓存文件 缓存文件默认为/etc/ld.so.cache
加载更多回复(16)

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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