我需要创建一个内部使用ffmpeg函数的自定义共享库。这个想法是创建一个胖共享库,比如myffmpeg.so。使用ffmpeg构建共享库会导致重定位错误
我第一次构建ffmpeg代码(3.3.1作为这篇文章)。在配置期间,我通过--extra-cflags
和--extra-cxxflags.
指定-fPIC
,我还在配置期间指定-enable-pic
。运行configure和make后,成功创建了各种归档文件,如libswscale.a, libavformat.a,
等。
接下来,我尝试建立我的共享库:
gcc -fPIC -Ixxx mywrapper.cpp
gcc -shared -o myffmpeg.so mywrapper.o -Lxxx -lswscale -lavformat...
然而,这将导致一个错误:
Relocation R_X86_64_PC32 against symbol ff_M24A can not be
used when making a shared object;
看起来像我错过了一些编译器/连接设置。有人可以请指点我正确的方向吗?问候。
谢谢你的帮助。我确实需要静态库,以便我可以创建一个fat .so文件而不是几个.so文件。 – Peter