Maison > développement back-end > C++ > le corps du texte

Pourquoi est-ce que j'obtiens une erreur de relocalisation lors de la compilation avec ffmpeg et comment puis-je la corriger ?

Barbara Streisand
Libérer: 2024-11-08 04:21:01
original
458 Les gens l'ont consulté

Why do I get a relocation error when compiling with ffmpeg and how can I fix it?

Recompilation avec -fPIC pour la compatibilité des bibliothèques partagées

Lors de la compilation de programmes utilisant des bibliothèques, il est essentiel d'assurer la compatibilité entre le type de bibliothèque et la compilation drapeaux. Un de ces scénarios se produit lors de l'utilisation de la machine ARM Ubuntu pour réinstaller ffmpeg. La compilation d'un programme qui utilise la bibliothèque ffmpeg peut entraîner l'erreur suivante :

/usr/bin/ld: /usr/local/lib/libavcodec.a(amrnbdec.o): relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
Copier après la connexion

Cette erreur indique une incompatibilité entre le type de bibliothèque et les indicateurs de compilation. L'indicateur -fPIC est généralement utilisé lors de la compilation de code qui sera inclus dans une bibliothèque partagée (.so). Par défaut, cependant, ffmpeg est souvent compilé dans une bibliothèque statique (.a).

Pour résoudre ce problème, vous devez recompiler ffmpeg avec l'indicateur -fPIC. Cela peut être accompli en modifiant les options de compilation lors de la configuration de ffmpeg. Pour ce faire, ajoutez "--enable-shared" aux options ./configure. Alternativement, vous pouvez désactiver complètement les bibliothèques partagées en ajoutant "--disable-shared" à la place.

Une fois cette modification effectuée, la recompilation de ffmpeg produira une bibliothèque partagée (.so) au lieu d'une bibliothèque statique (.a ). Lorsque vous compilerez votre programme qui utilise la bibliothèque ffmpeg, il pourra se connecter avec succès à la bibliothèque partagée, résolvant ainsi l'erreur de relocalisation.

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!

source:php.cn
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