我是靠谱客的博主 聪慧绿草,最近开发中收集的这篇文章主要介绍ffmpeg先编译静态库再编译动态链接库出现的异常问题解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

上次解决了编译ffplay异常的问题
这次要将ffmpeg的库用起来,不过编译动态库的时候遇到了点问题:
relocation R_X86_64_32 against `a local symbol’ can not be used when making a shared object; recompile with -fPIC

由于上次使用./configure默认配置,里面只编译了.a静态文件(可通过 ./configure --help 看到)。所以先把.so动态库也编译了。
推荐一开始配置./configure文件的时候就添加设置 --enable-shared。如:./configure --enable-shared --enable-ffplay

sudo make clean	//清除掉上一章编译的内容后重新安装
./configure --enable-shared --enable-ffplay
sudo make 
sudo make install

否则先编译静态库之后再添加动态库的编译会出现上面的错误:

是由于,只进行静态编译./configure生成的编译配置信息不会生成 -fPIC配置
解决:
可参考:https://blog.csdn.net/ssf1987/article/details/81118631

由于ffmpeg-3.4.2/使用gcc来编译静态依赖库,编译的中间文件都保存在了ffmpeg-3.4.2/ffbuild下面,所以需要进去编辑 config.mak。
1、修改配置信息中,使用gcc、g++编译器时的配置项:
在文件里的CFLAGS= 还有CPPFLAGS=之后增加 -fPIC。 之后编译

sudo make 
sudo make install

或者使用方法2,则不需要进去修改配置项,临时修改CFLAGS变量:
2、

CFLAGS="-O3 -fPIC" ./configure --enable-shared
sudo make 
sudo make install

之后就可以在你配置安装的目录下看到动态链接库了
在这里插入图片描述
下一章就可以把ffmpeg用起来了

最后

以上就是聪慧绿草为你收集整理的ffmpeg先编译静态库再编译动态链接库出现的异常问题解决的全部内容,希望文章能够帮你解决ffmpeg先编译静态库再编译动态链接库出现的异常问题解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部