Mysql常见问题集锦

缺少libstdc++.so.6库的原因及解决办法

解决办法:

一、安装库
1. 查看哪个安装包包含该库:yum provides libstdc++.so.6
   libstdc++-4.4.7-4.el6.i686
2. 根据提示安装 libstdc++-4.4.7-4.el6.i686
    yum install  libstdc++-4.4.7-4.el6.i686
   报错:
--> Finished Dependency Resolution
Error: Protected multilib versions: libstdc++-4.4.7-4.el6.i686 != libstdc++-4.4.7-3.el6.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
    2.1 解决办法:
    yum  update  libstdc++-4.4.7-3.el6.x86_64
然后再执行步骤2的命令

解决方法2:

系统中缺少一个lib库 libz.so.1文件,使用yum安装会自动找到相关的rpm包

yum install libstdc++.so.6

错误总结

Protected multilib versions     一般这种问题一般会在64位系统中安装32位系统时出现,同一个软件,不同版本造成的冲突。

错误信息中包含这条信息表示:

yum检测出我们安装的库在 zlib-1.2.3-29.el6.i686 和 zlib-1.2.3-27.el6.x86_64两个包中都存在(有冲突

yum -y install libstdc++.so.6 --setopt=protected_multilib=false

总结:这个参数的解决64位操作系统上安装32位软件包缺少lib库依赖的时候非常有用,因为64位操作系统默认都会安装64位的lib库到 /lib64目录下,而32位的应用程序需要的lib库在/lib目录下,lib库文件名又都是相同的,安装时就经常出现上面冲突的问题。

https://my.oschina.net/lionel45/blog/509476

二、包含这个库的软件已经安装,但是找不到库文件

方法1:

# vim /etc/ld.so.conf      //在新的一行中加入库文件所在目录
  /usr/lib  

# ldconfig                 //更新/etc/ld.so.cache文件
  • 1
  • 2
  • 3
  • 4

方法2:

1.将用户用到的库统一放到一个目录,如 /usr/loca/lib
# cp libXXX.so.X /usr/loca/lib/           

2.向库配置文件中,写入库文件所在目录
# vim /etc/ld.so.conf.d/usr-libs.conf    
  /usr/local/lib  

3.更新/etc/ld.so.cache文件 # ldconfig 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这里采用第二种办法,它更为方便,对于原系统的改动也最小。而/etc/ld.so.conf的文件内容是include /etc/ld.so.conf.d/*.conf,所以在/etc/ld.so.conf.d目录下,加入任何以.conf为后缀的文件,都能被ld识别。

ld.so.cache的更新是递增式的,就像PATH系统环境变量一样,不是从头重新建立,而是向上累加。只有重新开机,系统才从零开始建立ld.so.cache文件。

猜你喜欢

转载自www.cnblogs.com/linuxws/p/9074521.html