GNU/Linux >> Tutoriales Linux >  >> Linux

ld no puede encontrar una biblioteca existente

En Ubuntu, puede instalar libtool que resuelve las bibliotecas automáticamente.

$ sudo apt-get install libtool

Esto resolvió un problema con ltdl para mí, que había sido instalado como libltdl.so.7 y no se encontró simplemente como -lltdl en preparación.


El problema es que el enlazador está buscando libmagic.so pero solo tienes libmagic.so.1

Un truco rápido es hacer un enlace simbólico libmagic.so.1 a libmagic.so


Es una convención de Debian separar las bibliotecas compartidas en sus componentes de tiempo de ejecución (libmagic1: /usr/lib/libmagic.so.1 → libmagic.so.1.0.0 ) y sus componentes de desarrollo (libmagic-dev: /usr/lib/libmagic.so → … ).

Porque el soname de la biblioteca es libmagic.so.1 , esa es la cadena que se incrusta en el ejecutable, por lo que es el archivo que se carga cuando se ejecuta el ejecutable.

Sin embargo, debido a que la biblioteca se especifica como -lmagic al enlazador, busca libmagic.so , por lo que es necesario para el desarrollo.

Consulte Diego E. Pettenò:Enlazadores y nombres para obtener detalles sobre cómo funciona todo esto en Linux.

En resumen, deberías apt-get install libmagic-dev . Esto no solo le dará libmagic.so pero también otros archivos necesarios para compilar como /usr/include/magic.h .


Tal como lo acaba de formular grepsedawk, la respuesta se encuentra en el -l opción de g++ , llamando a ld . Si observa la página del manual de este comando, puede hacer lo siguiente:

  • g++ -l:libmagic.so.1 [...]
  • o:g++ -lmagic [...] , si tiene un enlace simbólico llamado libmagic.so en su ruta libs

Linux
  1. Cómo solucionar el error de configuración:no se puede encontrar el directorio de macros 'm4' [Resuelto]

  2. No se puede encontrar una baseurl válida:error de YumRepo [resuelto]

  3. Error de configuración de phpize:no se pueden encontrar las fuentes (config.m4)

  4. Error No se puede encontrar [PHP Extension mysqlnd] de OpenSSL

  5. No se puede encontrar pspell:corrige el error de configuración de PHP

No se puede instalar Gstreamer-ffmpeg de 32 bits Normalmente, ¿la biblioteca no puede encontrar otras bibliotecas de 32 bits?

¿No se puede encontrar -lm?

No se puede encontrar el error de pkg-config

Error de compilación usando cmake:no se puede encontrar -lpthreads

¿Por qué 'no se puede sobrescribir el archivo existente'?

Averigüe si la biblioteca está en la ruta