2011-11-30 8 views
5

Sto usando il seguente codice per verificare libreria RE2 di GoogleRE2 biblioteca carico

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

sto compling usando il seguente comando -

g++ -lre2 -o retest retest.cc 

di compilare bene, ma quando sto cercando di eseguire ripetere il test con la sua ./retest gettando il seguente errore -

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

ho controllato e biblioteca libre2.so.0 fa esistono nelle directory user/local/lib e re2/obj/so. Allora, perché sta arrivando questo errore, sto dimenticando alcuni dettagli da aggiungere?

+1

Potrebbe essere una soluzione? http://edn.embarcadero.com/article/32861. Basta impostare il tuo LD_LIBRARY_PATH per puntare alla directory lib in cui si trova libre.so.0. – Lucian

+1

dove si trova il file libre2.so.0? è nel tuo 'LD_LIBRARY_PATH' e/o un percorso da /etc/ld.so.conf? hai eseguito ldconfig dopo averlo installato? – PlasmaHH

+1

Possibile duplicato di [errore di Linux durante il caricamento delle librerie condivise: impossibile aprire il file oggetto condiviso: nessun file o directory di questo tipo] (http://stackoverflow.com/questions/480764/linux-error-while-loading-shared-libraries-cannot -open-shared-object-file-no-s) –

risposta

4

In esecuzione sudo ldconfig ha fatto il trucco.

1

trabocchetto Classic:

g++ -o retest retest.cc -lre2 

Le librerie dovrebbero essere ultima

Modifica ad essere onesto io sono sorpreso per l'assenza di errori di collegamento. Lo manterrò nel caso in cui avessi perso qualche informazione nella domanda

+2

Probabilmente è il momento di assicurarsi che la libreria si trovi nel percorso di ld e rieseguire ldconfig. –

+0

@ MichaelKrelin-hacker: +1 possibilmente. Sebbene nella maggior parte dei sistemi 'usr/local/lib' sia in ldconfig e libre2 è impacchettato – sehe

+0

Penso di sì, il controllo del percorso saltato è molto probabilmente sicuro e nel caso in cui la libreria sia stata installata dalla sorgente' ldconfig' potrebbe essere di aiuto. –