Maison > développement back-end > C++ > Pourquoi mon éditeur de liens ne trouve-t-il pas « -l » ?

Pourquoi mon éditeur de liens ne trouve-t-il pas « -l » ?

Mary-Kate Olsen
Libérer: 2025-01-03 07:11:39
original
793 Les gens l'ont consulté

Why Can't My Linker Find `-l`?

"usr/bin/ld : impossible de trouver -l" Guide de dépannage

Lors de la compilation d'un programme, l'erreur "usr/bin/ld : impossible de trouver -l" indique que l'éditeur de liens ne parvient pas à localiser la bibliothèque spécifiée. Pour résoudre ce problème, suivez les étapes de dépannage suivantes :

1. Vérifier l'existence de la bibliothèque :

Assurez-vous que la bibliothèque à laquelle vous faites référence existe à l'emplacement spécifié. Exécutez la commande suivante pour répertorier toutes les bibliothèques disponibles :

ldconfig -p | grep <nameOfTheLibrary>
Copier après la connexion

2. Validation du lien symbolique :

Si vous avez créé un lien symbolique vers la bibliothèque, confirmez qu'il est correct et qu'il pointe vers le fichier de bibliothèque réel. Utilisez la commande "ls -l" pour afficher le lien :

ls -l <symbolicLink>
Copier après la connexion

3. Sortie de l'éditeur de liens détaillé :

Pour déterminer les fichiers spécifiques recherchés par l'éditeur de liens, exécutez-le en mode détaillé. Ajoutez l'indicateur "--verbose" à la commande de liaison :

ld -l<nameOfTheLibrary> --verbose
Copier après la connexion

La sortie affichera tous les répertoires et fichiers potentiels pris en compte par l'éditeur de liens.

4. Installer les bibliothèques manquantes :

Si la bibliothèque n'existe pas ou ne peut pas être localisée, installez-la à l'aide de votre gestionnaire de packages. Par exemple, sur un système basé sur Debian :

sudo apt-get install <nameOfTheLibrary>-dev
Copier après la connexion

5. Ajouter le chemin de la bibliothèque à la commande :

Dans certains cas, l'éditeur de liens peut ne pas être en mesure de trouver automatiquement la bibliothèque. Vous pouvez spécifier manuellement le chemin de la bibliothèque à l'aide de l'indicateur "-L" :

g++ -o myprogram myprogram.cpp -l<nameOfTheLibrary> -L/path/to/library
Copier après la connexion

Exemple :

Pour résoudre le problème décrit dans le problème référencé, où le l'éditeur de liens n'a pas pu trouver la bibliothèque ZLIB :

  1. Assurez-vous que le fichier zlib.so existe dans le répertoire spécifié ou créez un lien symbolique au fichier versionné (zlib.so.N).
  2. Exécutez ld -lzlib --verbose pour vérifier les fichiers recherchés.
  3. Si zlib.so est manquant, créez un lien symbolique vers le fichier versionné existant :
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal