He compilado algunas bibliotecas de las fuentes, y los archivos posteriores make installestán en/usr/local/lib
Por ejemplo, en mi caso tengo el archivo libodb-2.2.soque está en este directorio.
Sin embargo, cuando inicio el ejecutable que se ha vinculado libodb, recibí el error: error al cargar bibliotecas compartidas:libodb-2.2.so: cannont open shared object file: No such file or directory.
¿Significa que he compilado mi ejecutable incorrectamente? ¿o debería indicarle al sistema que también puede haber algunas bibliotecas interesantes en la carpeta /usr/local/lib?
Estoy usando Ubuntu 12.04, Linux kernel 3.2.0-38-generic.

gdbque habría ayudado de todos modos con unlinkproblema, por ejemplo. Soy realmente curioso. Al principio, su comentario me parece ajeno al problema. Pero puedo estar equivocado. De hecho, no sé lo suficientegdb, y la carga de bibliotecas.Respuestas:
Para la sesión actual puedes
o para hacer el cambio permanente puede agregar
/usr/local/liba/etc/ld.so.conf(o algo que incluye) y ejecutarldconfigcomo root.Si todavía tiene problemas, la ejecución
ldd [executable name]le mostrará las bibliotecas que está tratando de encontrar y cuáles no se pueden encontrar.fuente
manpáginaldd(1)"En el caso habitual, ldd invoca el enlazador dinámico estándar (verld.so(8)) con laLD_TRACE_LOADED_OBJECTSvariable de entorno establecida en1, lo que hace que el enlazador muestre las dependencias de la biblioteca. Tenga en cuenta, sin embargo, que en algunas circunstancias, algunas versiones delddmayo intente obtener la información de dependencia ejecutando directamente el programa. Por lo tanto, nunca debe emplearldden un ejecutable no confiable , ya que esto puede resultar en la ejecución de código arbitrario. Una alternativa más segura cuando se trata de ejecutables no confiables es: ... "$ objdump -p /path/to/program | grep NEEDED"-Ly-rpathdurante la compilación para establecer la ruta de búsqueda de enlace y la ruta de búsqueda de tiempo de ejecución para las bibliotecas es la forma correcta, según esta pregunta y respuesta.Si ya has corrido
ldconfigdespués de construir la biblioteca, sigue leyendo. Si no, lea primero sobre ldconfig ./usr/local/libpodría no estar en la ruta de la biblioteca que utiliza ldconfig. Puedes hacer esto:Y las cosas deben agregarse a la memoria caché del vinculador, pero probablemente sea mejor agregar la ruta correctamente. Asegúrate de tener un
/etc/ld.so.conf.ddirectorio. Si es así, agregue un archivo (llámelo "usr-local.conf", o lo que sea), y ponga una línea en él:Ahora corre
ldconfig. Si no tiene el directorio ld.so.conf.d, debe tener un/etc/ld.so.confarchivo y puede agregar esa línea al final.fuente
/etc/ld.so.conf.dsudoed ldconfig para tenerlo en cuenta y mi ejecutable puede comenzar ahora.