zoukankan      html  css  js  c++  java
  • libstdc++.so.5: cannot open shared object file: No such file or directory

    中文分词一般会选择ICTCLAS的模块,虽然不能说很完美,但也算是一个不错的选择。
    它提供了windows版本和linux版本,并支持C/C#/JNI接口。这本来是一个不错的事情,但版本一多,官方似乎就有点维护不过来了。
    在linux下调用它的.so文件后,它会报错如下:

    1
    2
    Exception in thread "main" java.lang.UnsatisfiedLinkError: /..../libICTCLAS50.so:
    libstdc++.so.5: cannot open shared object file: No such file or directory

    这个错误原因很简单,版本不对,ICTCLAS使用的c++ lib库落后了自己正常使用的stdc++ lib太远了,导致兼容不能。为此我们需要专门为它下载个过去的版本。
    fedora这个distribution可以让事情变得比较简单。
    libstdc++.so.5 是compat-libstdc++-33 package下的一部分,从这个地址可以找到一些mirror,随便选择一个,下载rpm包,安装即可。
    当然,yum可以更容易解决这个问题:

    1
    # yum install compat-libstdc++-33

    注意,stackoverflow的这个问答中,有人建议使用这个命令

    1
    # yum install 'libstdc++.so.5'

    这种手法在某些时候也许是可用的,在i386,i686的系统下也是可以的,但是在x64环境下其实是不能用的。
    因为它会找到个compat-libstdc++-33.i686,然后安装。效果就是lib/中出现了需要的.so,但在更重要的lib64/中却并没有安装到。

    如果是其他版本,应该也可以从软件仓库中找到一些可用的安装包。
    如果实在不行。自求多福吧。。libstdc++.so.5是gcc 3.3版本附赠的一个东西,所以你可能需要试试gcc 3是怎么编译的。
    提供一个下载的源: http://packages.debian.org/stable/base/libstdc++5
    下载那个.tar.gz包,慢慢编译吧
    当然,应该还有更好的方法,虽然我不知道。

    Ubuntu系统解决该问题:

    新装的Ubuntu中使用一些程序出现:libstdc++.so.5: cannot open shared object file: No such file or directory

    sudo apt-get install libstdc++5 末果,说找不到这个包,但是有 libstdc++6

    那么选择手动安装:

    1. 下载安装包: wget -c http://lug.mtu.edu/ubuntu/pool/main/g/gcc-3.3/libstdc++5_3.3.6-10_i386.deb

    2. 解包为libstdc++5: dpkg -x libstdc++5_3.3.6-10_i386.deb libstdc++5 

    3. 复制到系统lib目录:sudo cp libstdc++5/usr/lib/libstdc++.so.5.0.7 /usr/lib 

    4. 进入系统lib目录建libstdc++5链接:cd /usr/lib; sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5 

    搞定!

    如果找不到url按下列方式走:

    1.下载安装包:

      http://free.nchc.org.tw/ubuntu//pool/universe/g/gcc-3.3/libstdc++5_3.3.6-25ubuntu4_i386.deb

    //以上的URL可能会无效,此时请到ubuntu的官方网站的packages栏目'http://packages.ubuntu.com/precise/amd64/libstdc++5/download"选择一个可用的链接来下载.deb文件。

    2. 解包为libstdc++5: dpkg -x libstdc++5_3.3.6-25ubuntu1_amd64.deb libstdc++5

    3. 复制到系统lib目录

     cd libstdc++5/usr/lib/i386-linux-gnu

    cp * /usr/lib

     

    3.cp libstdc++5/usr/lib/libstdc++.so.5.0.7 /usr/lib

    //libstdc++.so.5.0.7要替换为实际的文件名。

    4. 进入系统lib目录建libstdc++5链接:cd /usr/lib; sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5

  • 相关阅读:
    GRYZ20211029模拟赛解题报告
    LG 题解 CF1545B AquaMoon and Chess
    GRYZ10.27模拟赛解题报告
    开博客通告
    民科吧编程赛 题解
    民科吧编程赛 试题
    四则运算开平方——对民科吧编程大赛题目的再探究
    The First
    机械手相机9点坐标标定-基于C#+EmguCV
    Emgucv图像处理工具
  • 原文地址:https://www.cnblogs.com/DjangoBlog/p/3680203.html
Copyright © 2011-2022 走看看