J'essaie de mettre en place une API libusb sur mon système d'exploitation. J'ai téléchargé Libusb API sur libusb.org. J'ai suivi la procédure d'installation standard: puis j'ai lancé Eclipse C / C ++ et copié un code du tutoriel trouvé sur Internet. Mais lorsque vous essayez de le construire, j'ai eu la sortie suivante: p> J'ai libusb.so in / lib et j'ai aussi USB.h in / usr / local / include et le lien pour le .so et libusb.a dans /usr/local/lib.< Aso the #include à l'intérieur du code est correct. P> Je sais que le problème est dans la liaison mais je , genre de, ne peut pas le faire fonctionner :) p> J'utilise le système d'exploitation Fedora 15 et GCC 4.6.0 20110603 (Red Hat 4.6.0-10) Compilateur de version. P> Alors, que pourrais-je faire pour résoudre ces références indéfinies? Merci beaucoup pour l'aide :) p> p>
4 Réponses :
Quelle est votre ligne de commande de liaison? Vous devez avoir -LUSB code> dans la commande de liaison; Juste avoir l'en-tête inclus ne fonctionnera pas. P>
Je l'ai essayé mais je ne savais pas comment obtenir le drapeau -Lusb :) Mais Xtroce m'a dit que maintenant ça marche :) Merci d'aide :)
Je n'utilise pas Eclipse C / C ++, mais je suis à peu près sûr que la raison est la même que je me suis confrontée il y a quelque temps lors de la mise en place d'un projet C dans NetBeans. p>
Il ne suffit pas d'avoir le #include code> dans votre code et la bibliothèque au bon endroit - vous devez également dire Eclipse où les chercher et comment les utiliser. Ce montre que vous comment le configurer dans Eclipse. p>
C'est le fait que l'OP ne relie pas à la bibliothèque, et non le fait que les en-têtes ne peuvent pas être trouvés. Ceci est un Erreur de référence indéfinie LD code> non défini, pas un
GCC code> Erreur des en-têtes manquantes.
Sûr. Mais je faisais référence au principe en général pour Eclipse.
Le préprocesseur C de GCC, utilisé par Eclipse, recherche des en-têtes, à tout le moins, dans / usr / include code> par défaut, les en-têtes ne sont presque jamais un problème.
Vous devez définir le drapeau de la liaison de la bibliothèque pour la compilation dans la liaison,
Vous pouvez obtenir une liste complète dans la console en exécutant Voici les bibliothèques que vous avez installées sur votre système et que vous devez créer un lien avec ceux que vous souhaitez utiliser.
Donc, dans votre exemple, il est libusb afin que vous fassiez p> il devrait y avoir la sortie p> ou p> Project -> Properties -> C/C++
Build -> Miscellaneous -> flags
Oui merci beaucoup :) J'ai suivi vos commandes et maintenant ça marche. En outre, j'ai une meilleure vue d'ensemble sur la façon de relier les bibliothèques .so aux compilateurs de GCC parce que j'ai programmé jusqu'à Java et je n'ai pas fait exactement comment faire cela. Mon drapeau pour la bibliothèque était -Lusb-1.0 Il y avait la seule différence
Compilé Heimdall, a eu une erreur, Modifier Heimdall / Cumakefiles / Heimdall.dir / link.txt Add -Lusb-1.0 Après avoir suivi ces instructions.
J'ai fait face au même problème. Mais j'ai pu résoudre celui-ci en ajoutant '-Lusb-1.0' à la liaison. P>
E.g: g ++ myfile.cpp -lusb-1.0 p>
Habituellement, une telle chose se passe lorsque Libusb.so lien sur votre système (E.G. /USR/LIB/X86_64-LIB/X86_64-LIB/X86_64-LIB/X86_64-LILUX-GNU/LIBUSB.SO) sur une version antérieure de LibusB qui ne contient pas les symboles requis, par exemple. libusb-0.1.so.4. Vous pouvez vérifier où un lien pointe à l'aide de la commande `` `readlink
S'il vous plaît voir le lien suivant, cela a fonctionné pour moi Stackoverflow.com/Questtions/10059146/gcc-libm-not- Travailler