sur Ubuntu, j'ai une application C ++ à Eclipse. L'application compile bien et je peux exécuter l'application de la ligne de commande. P>
Mais quand j'essaie de le déboguer ou de le gérer avec Eclipse, l'erreur J'ai défini ld_library_path dans mon fichier bishrc et définir une variable d'environnement LD_Library_Path dans la configuration d'exécution et la configuration de débogage vers: p>
/ home / behlingb / documents / API_LIBS / FileGDB_API / LIB P>
blockQuote>
Que manque-t-il d'autre ici pour que Eclipse gère cela? P>
Il n'existe qu'un seul fichier d'objet partagé que cette application nécessite et ce fichier provient d'un téléchargement de l'API tiers. Je viens de constater que si je place l'objet partagé dans le répertoire, l'exécutable est dans, il déboguera dans Eclipse. Existe-t-il un moyen de spécifier un répertoire différent, donc je n'ai pas à copier le fichier pour chaque projet? P> "Impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type" code> est lancé sur une bibliothèque partagée. P>
Mise à jour forte> p>
5 Réponses :
Vous pouvez utiliser strace code> utilitaire (et ensuite
grep code> pour
Ouvrir ou / ou
stat code> appels) pour obtenir Liste des fichiers .so requis pour exécuter SMTH, puis utilisez
localiser code> (ou rechercher des packages) pour connaître le placement réel de liber p>
J'utilise la version Kepler d'Eclipse. P>
Ceci est valide avec Eclipse Kepler (je n'ai pas examiné les anciennes versions). Pour activer le débogueur de charger vos bibliothèques partagées, essayez de définir LD_Library_Path échouera. Cependant, le plug-in CDT fournit une liste EM> Bibliothèques partagée EM> à cet effet P>
exécuter em> strud> menu -> configurations de débogage ... em> str> p> p> p> P> blockQuote>
Puis dans la boîte de dialogue de configuration p>
application C / C ++ EM> FORT> -> Votre projet em> -> Le débogueur em> stry> onglet -> bibliothèques partagées em> strong> onglet p> blockQuote> p>
Cela semble vraiment comme si cela devrait être la bonne réponse. Je l'ai essayé sur Mars et cela ne semble pas travailler pour moi.
D'accord avec la Menace, pour CDT sur Luna, cela ne semble pas fonctionner, l'ajout de LD_Library_Path semble avoir l'effet souhaité comme décrit par Monzie
Selon ce que @zuafi a suggéré, vous n'avez pas à grep pour les bibliothèques et `localiser 'pour les trouver.
Enregistrez la sortie de la strace dans un fichier: P>
open("/real/path/to/some/library.so", O_RDONLY|O_CLOEXEC) = 3 (any value here)
Si vous avez défini ld_library_path code> et cela ne fonctionne pas. Fermez les éclips et passez à partir du terminal de commande. J'ai accidentellement constaté que cela pourrait le faire fonctionner. Pas sûr de la raison, mais j'ai probablement quelque chose à voir avec l'initialisation des éclips. P>
Au fait, j'utilise la version Luna d'Eclipse
Je suppose que c'est parce que les sources de terminal ~ / .CASHRC lors du lancement et que vous aviez export ld_library_path code> dans ce fichier.
Je pense que vous êtes sur la bonne voie avec la configuration de la configuration de LD_Library_Path. Avez-vous vérifié pour vous assurer que vous l'exécutez à l'aide de cette configuration d'exécution? Dans LICDLIPSE, si vous cliquez sur la flèche grise Little, vers le bas, en plus de la flèche de droite, verte, droite, droite, vous pouvez choisir la configuration d'exécution à utiliser.
J'ai trouvé l'éclipse CDT (Neon.3) n'est pas très "stable". Parfois, Ctrl + Flèche ne fonctionne pas. La fermeture de la fenêtre la corrige. Parfois, le LD_Library_Path n'est pas ajouté à ce que j'ai demandé. Le redémarrage la corrige.