J'essaie de configurer le paquet source ffmpeg pour générer des fichiers .so plutôt que des fichiers .a.
J'exécute make
après ./configure --enable-shared
Cela me donne le message suivant:
/usr/bin/ld: libavutil/display.o: relocation R_X86_64_PC32 against undefined symbol 'hypot@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
Cependant, je ne sais pas où et comment ajouter l'indicateur -fPIC.
Il existe une option ./configure qui pourrait être le moyen le plus simple de résoudre le problème:
andrew@ilium~/source/ffmpeg_build/ffmpeg/ffmpeg$ ./configure --help | grep -i pic
--enable-pic build position-independent code
J'ai résolu la même erreur pour la compilation des sources FFMpeg 2.3.3 sous Ubuntu 14.04 LTS. J'ai réussi à compiler le code après avoir défini LD_LIBRARY_PATH
à /usr/lib/x86_64-linux-gnu
et ajouté -fPIC
indicateur à --cc
. Mes commandes de compilation de travail sont ici:
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
./configure --prefix=.. --enable-shared --enable-gpl --enable-version3 --enable-runtime-cpudetect --disable-outdev=sdl --disable-opencl --enable-libmp3lame --enable-libx264 --cc="gcc -m64 -fPIC" --extra-cflags="-I../include" --extra-ldflags="-L../lib -ldl"
make -j4
La relocalisation R_X86_64_PC32 par rapport au symbole non défini se produit généralement lorsque LDFLAGS est défini avec le renforcement et CFLAGS pas.
Peut-être juste une erreur de l'utilisateur:
Si vous utilisez -specs =/usr/lib/rpm/redhat/redhat-hardened-ld au moment du lien, vous devez également utiliser -specs =/usr/lib/rpm/redhat/redhat-hardened -cc1 au moment de la compilation, et pendant que vous compilez et liez en même temps, vous avez besoin des deux, ou supprimez -specs =/usr/lib/rpm/redhat/redhat-hardened-ld. Corrections communes:
https://bugzilla.redhat.com/show_bug.cgi?id=1304277#c
https://github.com/rpmfusion/lxdream/blob/master/lxdream-0.9.1-implicit.patch