我在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*
为什么不能运行应用程序?我该如何解决?
答案 0 :(得分:2)
您应该为您的服务器构建和打包它。
您的应用程序与其使用的某个库的不同(不兼容)版本相关联。
恕我直言,最简单的通常就是在它将要运行的盒子上构建它。
答案 1 :(得分:1)
通常,无法保证在Linux系统上构建的二进制文件可以在不同的Linux系统上运行(不同的发行版或同一发行版的不同版本)。对于某些应用程序,它足以复制库文件(lib*.so*
)或静态链接(gcc -static
),但一般来说,为多个Linux系统分发程序更复杂,没有简单的解决方案。
一种解决方案是为要运行它的每个系统重新编译程序。为此,您需要首先将编译器和库依赖项(包括*-devel
包)安装到这些系统。