3

PCRE ライブラリを使用する C アプリを作成しました。すべてが自分のコンピューターで動作します。ただし、バイナリを別のコンピューターにコピーして実行すると、次のエラーが発生します。

/libexec/ld-elf.so.1: 共有オブジェクト "libpcre.so.0" が見つかりません。"myapp" で必要です

ターゲットコンピューターにPCRE libをインストールすることで、おそらく動作させることができると思います。しかし、これを行うより便利な方法があるかどうか疑問に思っていますか? (いくつかの lib ファイルをコピーするだけですか?)

libpcre.so.0 ファイルをコピーしようとしましたが、うまくいきませんでした。

どんな助けでも大歓迎です!ありがとう、

4

3 に答える 3

2

@hackerが言ったように、ターゲットマシンにPCREをインストールするか、開発マシンで(libpcre.aの代わりに)静的ライブラリを使用する必要があります。libpcre.soこれは、スタティック ライブラリを使用して PCRE をビルドする必要があることを意味する場合もあり、スタティック ライブラリをプルするには正しいコンパイル時オプションを使用する必要があります。これを行う比較的簡単な方法の 1 つは/usr/lib/libpcre.a、コンパイラ コマンド ラインで指定することです。理想的には-lpcre、コマンド ラインにも含めないようにする必要があります。確かに、共有ライブラリよりも前に静的ライブラリを表示する必要があります。

シンボリック リンクの問題により、コピーが失敗した可能性があります。通常、次のようなファイルにリンクします。

/usr/lib/libpcre.so

ただし、これは次のようなバージョン管理されたライブラリへのシンボリック リンクです。

/usr/lib/libpcre.so.0

または、逆に機能する可能性もあります。コピーに使用tarしていた場合は、シンボリック リンクをコピーした可能性があります。

PCRE をシステム ディレクトリにインストールするのが理想的ですが、それには root 権限が必要です。また、より新しいバージョンの PCRE を古いバージョンで上書きしないように注意する必要があります。LD_LIBRARY_PATHまた、ユーザーに環境変数 (またはそれに相当する変数) の設定を強制したり、構成プログラム ( ld.so.conf?)の使用を強制したりすることも避けたいと考えています。

于 2009-08-27T21:56:03.577 に答える
2

インストールするか、静的にリンクすることをお勧めします。もちろん、前者はリソースが少ないです。互換性を確保する最善の方法は、すべての依存関係 (もちろん、ディストリビューションによって異なります) を指定して、ターゲット システム用のパッケージをビルドすることです。

于 2009-08-27T21:38:43.110 に答える
0

それをコピーして、envvar LD_LIBRARY_PATH をそれが存在するフォルダーに設定するか、この envvar を設定して次のようにプログラムを起動するシェル スクリプトを作成することもできます。

LD_LIBRARY_PATH=. ./your_program

プログラム ライブラリを確認する方法

于 2009-08-27T21:50:17.440 に答える