linux下编译ffmpeg很多报错,linux下ffmpeg库 ARM交叉编译
一、前言:
因为想用ffmpeg实现录像网络视频流功能,所以需要编译ffmpeg相关库,不过目前对视频方面很多知识还是小白,后续会写一些关于视频方面知识的文章
二、准备工作
作者目前版本是ffmpeg-3.0.2
2、编译器:arm-none-linux-gnueabi
三、安装编译
1、生成makefile文件
主要就是更改./configure文件,按照网上很多前辈的经验,配置项如下:
./configure --cross-prefix=arm-none-linux-gnueabi- --enable-cross-compile --target-os=linux --cc=arm-none-linux-gnueabi-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping --enable-libx264
关于--cross-prefix选项,看文档介绍是指定编译工具链的路径,上述命令之后会报警告:WARNING: arm-none-linux-gnueabi-pkg-config not found, library detection may fail.这里面是说没有pkg-config相关工具,我目前还不知道怎么安装arm-none-linux-gnueabi-cross-compile的pkg-config工具,但是这貌似不影响后续的使用。
下面总结下上述命令执行遇到的一些问题,因为作者需要libx264库进行编解码,所以需要链接libx264静态库可能很多像我这样的小白都会遇到,特总结如下:
(1)上述命令执行实际是会报错的,错误信息如下:ERROR: libx264 not found
这里也就不卖关子了,还是得查看config.log,看看为什么会报错,所以做技术来不得半点偷懒。
check_cpp
BEGIN /tmp/ffconf.42QaWrDA.c
1 #include
2 int x;
END /tmp/ffconf.42QaWrDA.c
arm-none-linux-gnueabi-gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -march=armv5te -std=c99 -fomit-frame-pointer -marm -pthread -E -o /tmp/ffconf.aGoA0I51.o /tmp/ffconf.42QaWrDA.c
/tmp/ffconf.42QaWrDA.c:1:18: fatal error: x264.h: No such file or directory
compilation terminated.
ERROR: libx264 not found
其实上面的意思已经很明白了,因为找不到x264.h头文件。奇怪,在上一篇文章中,大家也看到明明将x264小心翼翼的放到/usr/local/include目录下了,怎么会找不到呢?原来是编译的时候没有指定路径的缘由。于是乎在上述命令后加上了相关的编译选项--extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib。
./configure --cross-prefix=arm-none-linux-gnueabi- --enable-cross-compile --target-os=linux --cc=arm-none-linux-gnueabi-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping --enable-libx264 --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib
注:这里面不清楚什么路径下可以不用加此编译选项,望有高人指点。网上也有其他一些方法,这里不再敖述。
(2)作者想这下总该大功告成了吧,系统就是这么不安分,又狠狠地煽了我一耳光,执行上述命令后还是报错同样的错误,难道路径写错了?看了config.log后原来还是自己太天真了,不说了,上log。
arm-none-linux-gnueabi-gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -I/usr/local/include -march=armv5te -std=c99 -fomit-frame-pointer -marm -pthread -c -o /tmp/ffconf.7kpBfq0i.o /tmp/ffconf.GIosUL4b.c
cc1: warning: include location "/usr/local/include" is unsafe for cross-compilation [-Wpoison-system-directories]
arm-none-linux-gnueabi-gcc -L/usr/local/lib -march=armv5te -Wl,--as-needed -Wl,-z,noexecstack -o /tmp/ffconf.Dloiqgee /tmp/ffconf.7kpBfq0i.o -lx264 -lm -pthread
/boards/compilers/gcc/arm-none-linux-gnueabi/arm-2013q5/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: library search path "/usr/local/lib" is unsafe for cross-compilation
/usr/local/lib/libx264.a(opencl.o): In function `x264_opencl_load_library':
opencl.c:(.text+0x4f0): undefined reference to `dlopen'
opencl.c:(.text+0x504): undefined reference to `dlsym'
opencl.c:(.text+0x51c): undefined reference to `dlsym'
opencl.c:(.text+0x534): undefined reference to `dlsym'
opencl.c:(.text+0x54c): undefined reference to `dlsym'
opencl.c:(.text+0x564): undefined reference to `dlsym'
/usr/local/lib/libx264.a(opencl.o):opencl.c:(.text+0x57c): more undefined references to `dlsym' follow
/usr/local/lib/libx264.a(opencl.o): In function `x264_opencl_load_library':
opencl.c:(.text+0x7a0): undefined reference to `dlclose'
/usr/local/lib/libx264.a(opencl.o): In function `x264_opencl_close_library':
opencl.c:(.text+0x83c): undefined reference to `dlclose'
/usr/local/lib/libx264.a(opencl.o): In function `x264_opencl_lookahead_init':
opencl.c:(.text+0x1254): undefined reference to `dlopen'
opencl.c:(.text+0x1264): undefined reference to `dlsym'
opencl.c:(.text+0x1274): undefined reference to `dlsym'
opencl.c:(.text+0x1284): undefined reference to `dlsym'
opencl.c:(.text+0x1294): undefined reference to `dlsym'
opencl.c:(.text+0x12fc): undefined reference to `dlclose'
opencl.c:(.text+0x1308): undefined reference to `dlclose'
opencl.c:(.text+0x1b38): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
ERROR: libx264 not found
原来是找不到dl库,链接上dl库应该就可以了,新改的./configure命令如下:
./configure --cross-prefix=arm-none-linux-gnueabi- --enable-cross-compile --target-os=linux --cc=arm-none-linux-gnueabi-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping --enable-libx264 --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl
2、make
3、make file
linux下编译ffmpeg很多报错,linux下ffmpeg库 ARM交叉编译相关推荐
- linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置
一.linux下编译make文件报错"/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/415 ...
- 成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入
成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入 目录 解决问题 解决思路 解决方法 解决问题 .pyx格式文件,在window ...
- linux下ffmpeg库 ARM交叉编译
一.前言: 因为想用ffmpeg实现录像网络视频流功能,所以需要编译ffmpeg相关库,不过目前对视频方面很多知识还是小白,后续会写一些关于视频方面知识的文章 二.准备工作 1.ffmpeg源码地址: ...
- Linux下编译build的命令,【linux基础】20、内核的编译
一.一般src.rpm包的安装 有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译. src.rpm包=源代码 + specs文件 #specs文件是将源码 ...
- linux exosip编译,openssl、libosip2、libeXosip2三个库的编译过程
有同事最近要使用到sip的东东,需要使用到openssl.libosip2.libeXosip2这三个库,具体干嘛的我还不清楚,最近事多,头脑不太清醒,也不想记那些跟自己没关系的事. 不过山人自认为对 ...
- [CentOS]CentOS下编译CPP文件时报错[undefined reference to `__gxx_personality_v0' collect2: ld]的解决办法...
在CentOS环境下编译CPP时报出 undefined reference to `__gxx_personality_v0' collect2: ld 以上错误,调查了一下,加上参数[-lstdc ...
- linux编译安装的报错,linux编译安装时常见错误解决办法
This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...
- Linux 下编译安装软件,找不到共享库 xx.so 的解决办法
编译memcached时,报错没有libevent,于是下载libevent,configure , make && make install ,然后在重新安装memcache成功之后 ...
- Linux内核编译:很少有人提及的一些内容
1. 你可以使用O=参数将编译结果放到其他位置(非源代码目录),例如:make O=~/build ... 这样做的好处是你的源代码目录不会受到任何改变:你甚至可以在不同的体系结构间共享源代码. 注意 ...
- linux解压tar.gz报错,Linux解压tar.gz文件时提示gzip:stdin:not怎么办?
我们都知道Linux系统下的tar命令可用于文件的解压缩,在利用tar命令解压tar.gz文件的时候,提示gzip:stdin:not in gzip format错误,遇到这种情况该如何解决呢?随小 ...
最新文章
- Python学习笔记整理(十五)类的编写细节
- php mysql update 返回_php mysql_query增删改查(update delete insert)返回值类型
- 分布式消息队列 Kafka
- Gson读写JSON 数据
- 关于Java 8 forEach
- webservice发布及远程调用
- VisualGDB系列10:快速调试Linux应用程序
- PowerDesigner的學習
- 李炎恢老师的javascript的讲义以及 附带着javascript手册
- cocostudio学习(UIScrollView控件内部子控件的可视化问题)
- 推荐一些2021年整理的PHP毕业设计、毕设参考作品案例
- qpsk psk matlab,BPSK和QPSK调制解调原理及MATLAB程序资料
- XX公司信息化建设草案
- 提升C4D工作效率的30个快捷键
- A*算法在Unity中的实现
- 计算机程序员简历基本技能,应聘程序员的十大必备技能
- C++一本通题库1012
- ios 简书 获取通讯录信息_ios 各种权限整理
- 修改 Zotero 参考文献格式
- 西安python培训价格
热门文章
- VPX视频叠加板卡学习资料第199篇:基于Xilinx FPGA XC5VFX100T的6U VPX视频叠加板卡
- mset redis_redis mset key命令简介
- 外包一个小程序多少钱(外包小程序开发的价格费用)
- 苹果电脑python编译器_Mac版-python环境配置(二):编译器pycharm下载安装
- 计算机文档排版的心得体会,排版工作心得体会(共6篇) .docx
- matlab 四元方程求解,如何用Matlab求解如下一元四次方程,求指导
- 阅读笔记4:基于运动想象的脑机接口系统模式识别算法研究
- 相似的核心玩法之下,谁能在“自走棋”的路上走得更远?
- html边框流动效果,采用css实现流动的边框
- 我二刷以上的网文小说,本本经典,值得推荐