2011-11-30 74 views
5

我使用下面的代碼來測試谷歌的RE2庫RE2庫加載

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

我使用下面的命令compling -

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。只需將您的LD_LIBRARY_PATH設置爲指向libre.so.0所在的lib目錄即可。 – 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 -open-shared-object-file-no-s) –

回答

4

運行sudo ldconfig做到了。

1

經典陷阱:

g++ -o retest retest.cc -lre2 

的圖書館應該是最後

編輯說實話我在沒有鏈接錯誤的驚訝。我會保持它,以防你錯過了一些信息的問題

+2

可能是時候確定該庫在ld的路徑中並重新運行ldconfig。 –

+0

@ MichaelKrelin-hacker:+1可能。在大多數系統上,allrvp usr/local/lib'在ldconfig和libre2被打包 – sehe

+0

我想是的,跳過路徑檢查最有可能是安全的,如果從源文件'ldconfig'安裝庫可能會有所幫助。 –