一、前言:

因为想用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交叉编译相关推荐

  1. linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置

    一.linux下编译make文件报错"/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/415 ...

  2. 成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入

    成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入 目录 解决问题 解决思路 解决方法 解决问题 .pyx格式文件,在window ...

  3. linux下ffmpeg库 ARM交叉编译

    一.前言: 因为想用ffmpeg实现录像网络视频流功能,所以需要编译ffmpeg相关库,不过目前对视频方面很多知识还是小白,后续会写一些关于视频方面知识的文章 二.准备工作 1.ffmpeg源码地址: ...

  4. Linux下编译build的命令,【linux基础】20、内核的编译

    一.一般src.rpm包的安装 有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译. src.rpm包=源代码 + specs文件 #specs文件是将源码 ...

  5. linux exosip编译,openssl、libosip2、libeXosip2三个库的编译过程

    有同事最近要使用到sip的东东,需要使用到openssl.libosip2.libeXosip2这三个库,具体干嘛的我还不清楚,最近事多,头脑不太清醒,也不想记那些跟自己没关系的事. 不过山人自认为对 ...

  6. [CentOS]CentOS下编译CPP文件时报错[undefined reference to `__gxx_personality_v0' collect2: ld]的解决办法...

    在CentOS环境下编译CPP时报出 undefined reference to `__gxx_personality_v0' collect2: ld 以上错误,调查了一下,加上参数[-lstdc ...

  7. linux编译安装的报错,linux编译安装时常见错误解决办法

    This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...

  8. Linux 下编译安装软件,找不到共享库 xx.so 的解决办法

    编译memcached时,报错没有libevent,于是下载libevent,configure , make && make install ,然后在重新安装memcache成功之后 ...

  9. Linux内核编译:很少有人提及的一些内容

    1. 你可以使用O=参数将编译结果放到其他位置(非源代码目录),例如:make O=~/build ... 这样做的好处是你的源代码目录不会受到任何改变:你甚至可以在不同的体系结构间共享源代码. 注意 ...

  10. linux解压tar.gz报错,Linux解压tar.gz文件时提示gzip:stdin:not怎么办?

    我们都知道Linux系统下的tar命令可用于文件的解压缩,在利用tar命令解压tar.gz文件的时候,提示gzip:stdin:not in gzip format错误,遇到这种情况该如何解决呢?随小 ...

最新文章

  1. Python学习笔记整理(十五)类的编写细节
  2. php mysql update 返回_php mysql_query增删改查(update delete insert)返回值类型
  3. 分布式消息队列 Kafka
  4. Gson读写JSON 数据
  5. 关于Java 8 forEach
  6. webservice发布及远程调用
  7. VisualGDB系列10:快速调试Linux应用程序
  8. PowerDesigner的學習
  9. 李炎恢老师的javascript的讲义以及 附带着javascript手册
  10. cocostudio学习(UIScrollView控件内部子控件的可视化问题)
  11. 推荐一些2021年整理的PHP毕业设计、毕设参考作品案例
  12. qpsk psk matlab,BPSK和QPSK调制解调原理及MATLAB程序资料
  13. XX公司信息化建设草案
  14. 提升C4D工作效率的30个快捷键
  15. A*算法在Unity中的实现
  16. 计算机程序员简历基本技能,应聘程序员的十大必备技能
  17. C++一本通题库1012
  18. ios 简书 获取通讯录信息_ios 各种权限整理
  19. 修改 Zotero 参考文献格式
  20. 西安python培训价格

热门文章

  1. VPX视频叠加板卡学习资料第199篇:基于Xilinx FPGA XC5VFX100T的6U VPX视频叠加板卡
  2. mset redis_redis mset key命令简介
  3. 外包一个小程序多少钱(外包小程序开发的价格费用)
  4. 苹果电脑python编译器_Mac版-python环境配置(二):编译器pycharm下载安装
  5. 计算机文档排版的心得体会,排版工作心得体会(共6篇) .docx
  6. matlab 四元方程求解,如何用Matlab求解如下一元四次方程,求指导
  7. 阅读笔记4:基于运动想象的脑机接口系统模式识别算法研究
  8. 相似的核心玩法之下,谁能在“自走棋”的路上走得更远?
  9. html边框流动效果,采用css实现流动的边框
  10. 我二刷以上的网文小说,本本经典,值得推荐