Estoy tratando de construir un programa c ++ usando Unix.
Recibí el error
Linking CXX executable ../../bin/ME
/usr/bin/ld: cannot find -lboost_regex-mt
Escuché que solo necesito establecer la ubicación de libboost * en mi variable de entorno LD_LIBRARY_PATH y luego invocar make como lo hice originalmente, escribiendo
-L /usr/lib64 -l boost_regex-mt
o
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64
¿Pero dónde está LD_LIBRARY_PATH? ¿Cómo configuro la variable env LD_LIBRARY_PATH?

Respuestas:
Ya lo configuró cuando hizo esto:
Pero eso no resolverá tu problema.
$LD_LIBRARY_PATHse consulta en el momento de la ejecución, para proporcionar una lista de directorios adicionales en los que buscar bibliotecas vinculables dinámicamente. No se consulta en el momento del enlace (¡excepto tal vez para localizar bibliotecas requeridas por las propias herramientas integradas!).Para decirle al vinculador dónde encontrar bibliotecas en el momento de la compilación, debe usar la
-Lopción del vinculador. Tú ya hiciste eso también:Si todavía recibe el error, debe asegurarse de que la biblioteca esté realmente allí. ¿Tiene un archivo
libboost_regex-mt.soolibboost_regex-mt.aen ese (o cualquier) directorio? Tenga en cuenta que un archivo comolibboost_regex-mt.so.othersuffixno cuenta para este propósito. Si no tiene eso, entonces probablemente necesite instalar el paquete de desarrollo de su distribución para esta biblioteca.fuente
$LD_LIBRARY_PATHtambién es consultado porld: «5. Para un enlazador nativo, busque el contenido de la variable de entorno" LD_LIBRARY_PATH ". »ldmanual solo se refiere a dependencias recursivas: bibliotecas dependientes de una biblioteca que ya se seleccionó para vincular. No se trata de encontrar bibliotecas para el ejecutable que se está construyendo. Eso es lo que-Lhace.apt-getle da un comando no encontrado, entonces no es derivado de Debian, por lo que necesita otro método para instalar el paquete que falta. Sin embargo, ese es definitivamente tu problema.-Ldir -llibdebería funcionar como argumentos paraldogcc/g++/etcal incluir la fase de enlace, pero Q original y restaurado mencionamake: con un archivo MAKE normal que probablemente necesiteLDFLAGS="whatever"y con un archivo MAKE inteligente puede necesitar casi cualquier cosa, incluidos ladrillos para lanzar al autor del archivo MAKE inteligente.Otra forma de agregar permanentemente una nueva ruta en LD_LIBRARY_PATH:
Editar
.confarchivo en/etc/ld.so.conf.d/.Alguna vez instalé una aplicación y sus bibliotecas no pudieron ser reconocidas por otra aplicación. Luego agrego la ruta, es decir
/usr/local/hdf5/lib, alx86_64-linux-gnu.confarchivo. Solo pon en la siguiente línea. Salvar.Entonces corre
sudo ldconfigFuncionó.
PS: sistema operativo Ubuntu 14.04
fuente
Puede configurarlo en su
~/.profilearchivo de inicio específico o de su shell (por ejemplo,~/.bashrcpara bash,~/.zshenvpara zsh). Luego, debe reiniciar su shell (y posiblemente cerrar sesión e iniciar sesión nuevamente, según su elección).Puede verificar su configuración con:
EDITAR:
LD_LIBRARY_PATHes para bibliotecas compartidas que contienen código de máquina, cuyos nombres de archivo generalmente contienen.sosu nombre, posiblemente seguido de números separados por puntos para distinguir las diferentes versiones. Es posible queLD_LIBRARY_PATH, a pesar de esto , no se encuentre una biblioteca debido a la falta de coincidencia de ABI. Tenga en cuenta también que los lenguajes (como Perl y Python) y los paquetes pueden tener su propio sistema de bibliotecas (posiblemente también con.soarchivos), no relacionadosLD_LIBRARY_PATH.fuente
LD_LIBRARY_PATH(para evitar colisiones con las bibliotecas habituales). Debe hacer una pregunta específica para esto, con el mensaje de error que recibe.Si el error de la ruta de la biblioteca está en el vinculador, durante la compilación, debe agregar la ruta a la biblioteca en la variable $ LD_LIBRARY_PATH. Si el error de la biblioteca es cuando realmente ejecuta el programa compilado, entonces necesita agregar la ruta de la biblioteca a /etc/ld.so.conf y ejecutar ldconfig para reconstruir la caché de la ruta de búsqueda de la biblioteca.
fuente
Resuelto con:
agregar a
/etc/systemd/system/pm2-node.servicefuente