Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens l'erreur « la relocalisation R_ARM_MOVW_ABS_NC par rapport à « un symbole local » ne peut pas être utilisée lors de la création d'un objet partagé » ?
Recompilation avec l'indicateur -fPIC pour la machine ARM Ubuntu
Lors de la reconstruction de FFmpeg sur une machine ARM Ubuntu, on peut rencontrer l'erreur :
relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
Cette erreur indique que le système tente de lier une bibliothèque statique à une bibliothèque dynamique, ce qui est incompatible. Pour résoudre ce problème, il est nécessaire de recompiler la bibliothèque problématique, telle que FFmpeg, avec l'indicateur -fPIC.
Processus de recompilation
Les étapes suivantes peuvent être suivies pour recompiler une bibliothèque avec l'option -fPIC :
Exemple spécifique pour FFmpeg
Pour FFmpeg, la commande suivante peut être utilisée pour le recompiler avec le -Drapeau fPIC :
./configure --enable-shared --disable-static make
En ajoutant l'indicateur --enable-shared, les bibliothèques partagées seront générées à la place des statiques. L'indicateur --disable-static garantit qu'aucune bibliothèque statique n'est créée.
Après avoir reconstruit FFmpeg avec ces options, les bibliothèques recompilées peuvent être installées dans les répertoires système appropriés à l'aide de make install. Cela rendra les bibliothèques FFmpeg compatibles PIC disponibles pour liaison et utilisation par d'autres programmes.
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!