Erreur lors de la compilation avec ffmpeg : "La relocalisation R_ARM_MOVW_ABS_NC contre `un symbole local' ne peut pas être utilisée lors de la création d'un objet partagé ; recompilez avec -fPIC"
Lors de la tentative de réinstallation de ffmpeg sur un système ARM Ubuntu, une erreur de compilation s'est produite lors de l'utilisation d'un programme utilisant la bibliothèque ffmpeg. Le message d'erreur indiquait :
/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
Cette erreur résulte d'une tentative de liaison d'une bibliothèque statique (.a) avec une bibliothèque dynamique (.so). Pour résoudre ce problème, il est nécessaire de recompiler ffmpeg avec l'indicateur -fPIC.
Recompilation avec -fPIC
Ajout de l'indicateur --enable-shared pendant ./ configure demandera à ffmpeg de créer une bibliothèque dynamique. Alternativement, vous pouvez choisir de désactiver complètement les bibliothèques statiques si vous préférez.
Une fois la bibliothèque ffmpeg recompilée avec -fPIC, la compilation devrait se dérouler avec succès sans l'erreur susmentionnée.
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!