Je fais une bibliothèque dynamique en utilisant une fonction de libmxml.a la bibliothèque, mais je reçois cet avertissement:
gcc: /home/Mr32/gst-template4_final/gst-plugin/src/libmxml.a: linker _ input file unused because linking not done
4 Réponses :
Assurez-vous que les fichiers d'objet dans Voici un exemple rapide p> libmxml.a code> ont été construits avec
-fic code>. Il est nécessaire de créer une bibliothèque partagée. Voir aussi http://tldp.org/howto/program-library-howto /shared-libries.html
La liaison des bibliothèques partagées aux bibliothèques statiques n'est pas possible (à moins que vous ne sachiez vraiment très bien ce que vous faites). Ne le faites pas. P>
Le premier avertissement est de libtoure. Il vous dit que l'opération que vous avez demandée fera différentes choses sur différents systèmes et certaines de ces choses ne sont probablement pas ce que vous voulez. Souvent, il va simplement échouer de différentes manières spectaculaires, car le code qui va dans des bibliothèques partagées et statiques doit être compilée avec différents drapeaux de compilateur. P>
Le deuxième avertissement provient de GCC. Il vous dit que fournir une bibliothèque statique lorsque la compilation em> est inutile. C'est parce que vous avez $ (chemin) /libmxml.a code> dans
c b> drapeaux code>, où il n'a aucune affaire d'être. En fait, la plupart du temps, vous devriez pas em> avoir
$ (chemin) /libmxml.a code>, mais
-l $ (chemin) -Lmxml code> au lieu. Cela devrait toujours aller dans
ld b> drapeaux code>, mais GCC ne se plaingera pas si cela le rend également à la ligne de commande compilateur. P>
La liaison des bibliothèques partagées aux statiques est parfaitement i> possible et souvent souhaitable sur UNIX.
HM, je me suis trompé par le deuxième avertissement. Maintenant, je vois que la bibliothèque statique a été incluse dans CFLAGS, j'ai réécrit la réponse. Encore bien sûr, tout en reliant des bibliothèques partagées aux statiques, ce n'est certainement pas quelque chose que l'on devrait faire régulièrement. C'est plutôt une bonne canette de vers.
Hey merci je viens de mettre -l $ (chemin) dans ldflags et -lmxml dans gst_libs and magic n'a travaillé aucun avertissement ... !!! Merci mec..!!
@ M.32: Oui. Je suppose que le compilateur a trouvé à la fois statique et dynamique MXML et choisi la dynamique lorsque vous l'avez donné la chance. Ce qu'il devrait vraiment; Même si vous n'avez pas eu de problèmes avec la position-indépendance, vous auriez des problèmes lorsqu'un autre plugin souhaitait également utiliser MXML. Avec une liaison dynamique, il y aura une copie et tout ira bien, mais avec statique, il y aurait deux problèmes de débogage et de déboguer pourraient apparaître.
Lier la bibliothèque partagée libgstmatroskademux.la contre la bibliothèque statique p> blockQuote>
Cela vous avertit que si vous par exemple. J'ai essayé de construire ceci sur 64 bits Linux, cela échouera probablement. C'est parce que sur x86_64, tout code qui est lié à une bibliothèque partagée doit être compilé avec
-fic code> drapeau et code qui vit dans
.a code>. Les bibliothèques ne sont généralement pas. P>
GCC: ... / libmxml.a: fichier d'entrée de liaison inutilisé car la liaison n'est pas effectuée p> blockQuote>
Cela vous avertit que vous avez une gamme de commandes de bogus. Très probablement, vous compilez quelque chose et avoir
-c code> sur la ligne de commande (qui indique à GCC de s'arrêter après la compilation de la source et pas em> effectuer la liaison). Puisque vous fournissez également
libmxml.a code> sur cette même ligne de commande, GCC s'est rendu compte que vous ne savez pas ce que vous faites et vous avertiez de penser (plus) à ce sujet. P>
En fait, toutes les réponses précédentes sont erronées sur l'explication du premier avertissement que j'ai peur (surtout l'accepté). L'avertissement que la bibliothèque statique n'est pas portable susceptible de susciter le fait que vous avez eu le chemin à codé dur (il a à voir avec le fait que le fichier libgstmatroskademux.la code> contiendra réellement Ce chemin). Donc au lieu de s'appuyer sur
pkg-config code> ou
GCC code> pour effectuer la recherche de bibliothèques statiques pour vous (ce qui garantirait que votre projet compile avec succès sur plusieurs plates-formes et distributions) 'VE utilisé des chemins fixes pour la bibliothèque statique (et ledit chemin serait probablement différent sur d'autres plates-formes). Le correctif est en effet de passer
-l $ (chemin) -Lmxml code> à
GCC code> (comme suggéré par la deuxième partie de la réponse acceptée) car cela garantira une plus grande compatibilité et Faites le
reliant la bibliothèque partagée ... contre la bibliothèque statique ... n'est pas portable! Code> Erreur disparaît également. P>
Pourriez-vous ajouter des commandes exactes qui ont imprimé ces avertissements?
Assurez-vous que la bibliothèque partagée
libmxml.so code> est construite, puis utilisez-la.
freesoftwaremagazine.com/articles/agaal/... peut être pertinent pour vos intérêts.
@BasileSarTaryNkevitch Voir mon édition