【问题标题】:libmysqlcppconn.so.5: cannot open shared object file: No such file or directorylibmysqlcppconn.so.5:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2014-07-29 01:36:11
【问题描述】:

我在 ubuntu 上使用 Netbeans 构建了一个简单的 C++ 应用程序。 在应用程序中,我使用 mysql_connection 和 curl。 该应用程序在我的本地系统(Ubuntu)上运行良好

当我尝试在我的 Centos 服务器上运行该应用程序时,我收到以下消息:

 error while loading shared libraries: libmysqlcppconn.so.5: cannot open shared object file: No such file or directory.

尝试检查服务器上是否存在libmysqlcppconn.so.5库我发现有以下内容:

 REMOTE (Centos)
 **in [/usr/local/lib]**

 libmysqlcppconn-static.a  
 libmysqlcppconn.so@  
 libmysqlcppconn.so.7@  
 libmysqlcppconn.so.7.1.1.3*


 LOCAL (Ubuntu)
 **in [/usr/lib]**

 libmysqlcppconn-static.a  
 libmysqlcppconn.so@  
 libmysqlcppconn.so.5@  
 libmysqlcppconn.so.5.1.1.0*

为什么应用程序无法运行?我该如何解决?

【问题讨论】:

    标签: c++ mysql linux mysql-connector libmysql


    【解决方案1】:

    您应该为您的服务器构建和打包它。

    您的应用程序链接到它使用的库之一的不同(不兼容)版本。

    恕我直言,最简单的方法通常是在将要运行的盒子上构建它。

    【讨论】:

    • 我喜欢这个答案,但我讨厌它。它只是我在 ubuntu 上使用 Netbeans,它实际上在构建项目时为我做了一切。但是通过终端在centos上进行!我刚试过,我得到了很多以“/usr/local/include/cppconn/connection.h:31:29: error: boost/variant.hpp: No such file or directory”开头的错误
    • 看来您需要在服务器上安装依赖项。我个人喜欢 CMake,而且您似乎可以让它与 Netbeans 一起玩得很好。也许您应该考虑使用它,这样您就可以拥有一个既适用于您的服务器(从命令行)又适用于您漂亮的 UI 的项目。 :)
    • 当我安装 cpp 连接器时,我使用了“cmake .-DBOOST_ROOT:STRING=/boost_1_55_0”,因此安装识别了 boost 目录。我还应该做什么。还是我应该开始另一个问题:)
    • 你应该开始另一个问题,因为会有更多的人能够提供帮助。
    【解决方案2】:

    一般来说,不能保证在 Linux 系统上构建的二进制文件可以在不同的 Linux 系统上运行(不同的发行版或同一发行版的不同版本)。对于某些应用程序来说,复制库文件 (lib*.so*) 或静态链接 (gcc -static) 就足够了,但一般来说,如果没有简单的解决方案,为多个 Linux 系统分发程序会更加复杂。

    一种解决方案是为每个要运行它的系统重新编译程序。为此,您需要先将编译器和库依赖项(包括 *-devel 包)安装到这些系统。

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2015-04-12
      • 2018-11-26
      • 2019-11-27
      相关资源
      最近更新 更多