0

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*

アプリケーションを実行できないのはなぜですか? どうすれば修正できますか?

4

2 に答える 2

2

サーバー用にビルドしてパッケージ化する必要があります。

アプリケーションは、使用するライブラリの 1 つの別の (互換性のない) バージョンに対してリンクされていました。

IMHO 最も簡単なのは、多くの場合、実行するボックスにビルドすることです。

于 2014-06-08T10:18:50.790 に答える
1

一般に、Linux システムでビルドされたバイナリが別の Linux システム (別のディストリビューションまたは同じディストリビューションの別のバージョン) で動作するという保証はありません。一部のアプリケーションでは、ライブラリ ファイルをコピーする ( lib*.so*) か、静的にリンクする ( ) だけで十分ですgcc -staticが、一般に、複数の Linux システムにプログラムを配布するのはより複雑で、簡単な解決策はありません。

1 つの解決策は、プログラムを実行するシステムごとにプログラムを再コンパイルすることです。*-develそのためには、最初にコンパイラとライブラリの依存関係 (パッケージを含む) をそれらのシステムにインストールする必要があります。

于 2014-06-08T10:24:42.773 に答える