2011-11-30 11 views
5

私は、次のコマンドを使用してcomplingていますGoogleのRE2ライブラリRE2ライブラリのロード

int main() 
{ 
    int r = RE2::FullMatch("hello", "h.*o"); 
    cout <<" match = " << r << endl; 
    return 0; 
} 

をテストするには、次のコードを使用しています -

g++ -lre2 -o retest retest.cc 

それは罰金コンパイルされますが、私がしようとしていたときに./retestを使って再テストを実行して、次のエラーをスローする -

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

私はチェックしており、libre2.so.0ライブラリは行いますuser/local/libディレクトリとre2/obj/soディレクトリに存在します。では、なぜこのエラーが出てきて、追加する細部を忘れているのですか?

+1

これは解決策ですか? http://edn.embarcadero.com/article/32861 libre.so.0があるlibディレクトリを指すようにLD_LIBRARY_PATHを設定するだけです。 – Lucian

+1

libre2.so.0ファイルはどこにありますか?あなたの 'LD_LIBRARY_PATH'や/etc/ld.so.confのパスにありますか?インストール後にldconfigを実行しましたか? – PlasmaHH

+1

[共有ライブラリをロード中にLinuxエラー:共有オブジェクトファイルを開くことができません:そのようなファイルやディレクトリはありません](http://stackoverflow.com/questions/480764/linux-error-while-loading-shared-libraries-cannot –

答えて

4

実行中はsudo ldconfigでした。

1

クラシック落とし穴:

g++ -o retest retest.cc -lre2 

ライブラリは、私がリンクエラーの有無に驚いて正直に言うと、最後の

編集でなければなりません。あなたが質問のいくつかの情報を見逃してしまった場合に備えて私はそれを守ります。

+2

おそらく、ライブラリがldのパスに入っていることを確認し、ldconfigを再実行します。 –

+0

@ MichaelKrelin-hacker:可能であれば+1。 'usr/local/lib'のほとんどのシステムはldconfigにあり、libre2はパッケージ化されています。 – sehe

+0

私はそう思っています。パスチェックをスキップするのが最も安全で、ライブラリがソース' ldconfig'からインストールされている場合に役立ちます。 –

関連する問題