GNU/Linux >> Tutoriels Linux >  >> Linux

ld ne peut pas trouver une bibliothèque existante

Dans Ubuntu, vous pouvez installer libtool qui résout automatiquement les bibliothèques.

$ sudo apt-get install libtool

Cela a résolu un problème avec ltdl pour moi, qui avait été installé en tant que libltdl.so.7 et n'a pas été trouvé aussi simplement -lltdl en préparation.


Le problème est que l'éditeur de liens recherche libmagic.so mais vous n'avez que libmagic.so.1

Un hack rapide consiste à créer un lien symbolique libmagic.so.1 à libmagic.so


C'est la convention Debian de séparer les bibliothèques partagées dans leurs composants d'exécution (libmagic1: /usr/lib/libmagic.so.1 → libmagic.so.1.0.0 ) et leurs composants de développement (libmagic-dev: /usr/lib/libmagic.so → … ).

Parce que le soname de la bibliothèque est libmagic.so.1 , c'est la chaîne qui est intégrée dans l'exécutable, c'est donc le fichier qui est chargé lorsque l'exécutable est exécuté.

Cependant, comme la bibliothèque est spécifiée en tant que -lmagic à l'éditeur de liens, il recherche libmagic.so , c'est pourquoi il est nécessaire pour le développement.

Voir Diego E. Pettenò :Linkers and names pour plus de détails sur le fonctionnement de tout cela sous Linux.

En bref, vous devriez apt-get install libmagic-dev . Cela ne vous donnera pas seulement libmagic.so mais aussi d'autres fichiers nécessaires à la compilation comme /usr/include/magic.h .


Comme vient de le formuler grepsedawk, la réponse réside dans le -l possibilité de g++ , en appelant le ld . Si vous regardez la page de manuel de cette commande, vous pouvez soit :

  • g++ -l:libmagic.so.1 [...]
  • ou :g++ -lmagic [...] , si vous avez un lien symbolique nommé libmagic.so dans votre chemin libs

Linux
  1. Erreur de configuration de phpize :impossible de trouver les sources (config.m4)

  2. Erreur Impossible de trouver l'[extension PHP mysqlnd] d'OpenSSL

  3. Impossible de trouver pspell - Correction d'une erreur de configuration PHP

  4. Impossible d'installer Gstreamer-ffmpeg 32 bits normalement, la bibliothèque ne peut pas trouver d'autres bibliothèques 32 bits ?

  5. /usr/bin/ld :impossible de trouver -lpython2.7

Installation de Qt sous Linux, impossible de trouver -lGL

node.js :impossible de trouver le module 'demande'

usr/bin/ld :impossible de trouver -l<nameOfTheLibrary>

Impossible de trouver l'erreur pkg-config

Erreur de construction avec cmake :impossible de trouver -lpthreads

pourquoi 'ne peut pas écraser le fichier existant'?