2011-11-30 15 views
5

Estoy utilizando el código siguiente para probar la biblioteca RE2 de GoogleRE2 al cargar biblioteca

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

estoy compling con el siguiente comando -

g++ -lre2 -o retest retest.cc 

Se está recopilando bien, pero cuando estoy tratando de ejecutar someterse de nuevo a su ./retest lanzar el siguiente error -

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

he comprobado y la biblioteca libre2.so.0 hace existen en el directorio user/local/lib y en el directorio re2/obj/so. Entonces, ¿por qué viene este error y olvido algunos detalles para agregar?

+1

¿Podría ser esta una solución? http://edn.embarcadero.com/article/32861. Simplemente configure su LD_LIBRARY_PATH para apuntar al directorio lib donde se encuentra libre.so.0. – Lucian

+1

¿dónde se encuentra el archivo libre2.so.0? ¿está en tu 'LD_LIBRARY_PATH' y/o en una ruta desde /etc/ld.so.conf? ¿ejecutó ldconfig después de instalarlo? – PlasmaHH

+1

Posible duplicado de [Error de Linux al cargar bibliotecas compartidas: no se puede abrir el archivo de objeto compartido: No existe dicho archivo o directorio] (http://stackoverflow.com/questions/480764/linux-error-while-loading-shared-libraries-cannot -open-shared-object-file-no-s) –

Respuesta

4

Corriendo sudo ldconfig hizo el truco.

1

escollo clásico:

g++ -o retest retest.cc -lre2 

Las bibliotecas deben ser la última

Editar para ser honesto, estoy sorprendido por la ausencia de errores de enlace. Lo guardaré en caso de que haya omitido alguna información en la pregunta

+2

Probablemente es hora de asegurarse de que la biblioteca esté en la ruta de acceso del ld y vuelva a ejecutar ldconfig. –

+0

@ MichaelKrelin-hacker: +1 posiblemente. Aunque en la mayoría de los sistemas 'usr/local/lib' está en ldconfig y libre2 está empaquetado – sehe

+0

Creo que sí, saltarse la ruta de acceso es muy seguro y en caso de que la biblioteca se haya instalado desde la fuente' ldconfig' puede ser de ayuda. –

Cuestiones relacionadas