交叉编译工具下载地址 :

https://launchpad.net/linaro-toolchain-binaries/+download

其中我下载的是 :

gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz (md5sig
arm-Linux-gnueabihf crosscompiler for Linux

在CentOS 64 位环境下交叉编译 ffmpeg

./configure --sysroot=/home/arm_linux/arm-linux-gnueabihf/libc --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=/home/arm_linux/bin/arm-linux-gnueabihf-

提示如下错误:

arm-linux-gnueabihf/arm-linux-gnueabihf/bin/gcc: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

C compiler test failed.

上面这个错误执行

[root@localhost ffmpeg-1.1.3]#  yum   install   ld-linux.so.2

后解决。

然后继续configure , 又碰到下面的错误 :

[root@localhost ffmpeg-1.1.3]# /usr/routing/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc test.c

/usr/routing/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

这个错误后来换了  32 位的系统后解决。

编译完成后在目标机器上执行, 出错 :

[plain] view
plain
 copy

  1. root@cubieboard2:/home/linaro# ldd ffmpeg
  2. ./ffmpeg: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.17' not found (required by ./ffmpeg)
  3. libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6ee2000)
  4. libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6ec6000)
  5. libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6de2000)
  6. /lib/ld-linux-armhf.so.3 (0xb6f58000)

这个问题是因为交叉编译工具的 glibc库的版本和目标机器上的glibc库的版本不一致造成的,

解决办法就是静态链接 glibc库,执行下面的命令重新生成Mkaefile文件。

./configure --sysroot=/home/arm_linux/arm-linux-gnueabihf/libc --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=/home/arm_linux/bin/arm-linux-gnueabihf- --extra-libs=/home/arm_linux/arm-linux-gnueabihf/libc/usr/lib/arm-linux-gnueabihf/libc.a

make

下来在目标机器上查看就正常了 :

[plain] view
plain
 copy

  1. root@cubieboard2:/home/linaro# ldd ffmpeg
  2. libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6ec6000)
  3. libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6ea3000)
  4. libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6e88000)
  5. libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6da4000)
  6. /lib/ld-linux-armhf.so.3 (0xb6f3c000)

不过运行的时候出问题了 :

root@cubieboard2:/home/linaro# ./ffmpeg

unexpected reloc type in static binaryAborted

看来静态链接libc库不是个办法。。。

还有一招, 就是直接从目标机器里把 libc.so.6  和  librt.so.1 这两个库 复制到 交叉编译机器, 覆盖源文件, 然后再重新编译即可。

执行 ffmpeg , 现在可以执行了, 不过有丢包, 有编解码失败的情况 , PC上没问题:

[plain] view
plain
 copy

  1. [h264 @ 0x15b80a0] RTP: missed 28 packets
  2. [h264 @ 0x15b80a0] RTP: missed 5 packets
  3. [h264 @ 0x15b80a0] error while decoding MB 75 37, bytestream (-10)
  4. [h264 @ 0x15b80a0] concealing 614 DC, 614 AC, 614 MV errors in P frame
  5. RTP: missed 3 packets=17.1 size=    1062kB time=00:00:41.48 bitrate= 209.7kbits/s dup=0 drop=5
  6. [h264 @ 0x15b80a0] RTP: missed 6 packets
  7. [h264 @ 0x15b80a0] RTP: missed 3 packets
  8. Last message repeated 1 times
  9. [h264 @ 0x15b80a0] RTP: missed 6 packets
  10. [h264 @ 0x15b80a0] RTP: missed 3 packets
  11. [h264 @ 0x15b80a0] RTP: missed 6 packets
  12. [h264 @ 0x15b80a0] RTP: missed 3 packets
  13. [h264 @ 0x15b80a0] RTP: missed 6 packets
  14. RTP: missed 28 packets17.1 size=    1062kB time=00:00:41.48 bitrate= 209.7kbits/s dup=0 drop=5
  15. [h264 @ 0x15b80a0] error while decoding MB 61 34, bytestream (-5)
  16. [h264 @ 0x15b80a0] concealing 868 DC, 868 AC, 868 MV errors in P frame
  17. [h264 @ 0x15b80a0] RTP: missed 25 packets
  18. [h264 @ 0x15b80a0] error while decoding MB 40 34, bytestream (-7)
  19. [h264 @ 0x15b80a0] concealing 889 DC, 889 AC, 889 MV errors in P frame
  20. [h264 @ 0x15b80a0] RTP: missed 49 packets
  21. [h264 @ 0x15b80a0] error while decoding MB 9 20, bytestream (-20)

【FFMPEG】【ARM-Linux开发】arm上安装FFMPEG的更多相关文章

  1. minigui移植到arm linux开发板上无法执行

    要保证目录下有该文件 /etc/MiniGUI.cfg 复制过程使用cp –af 强制复制

  2. 【FFMPEG】Ubuntu上安装FFMPEG

    在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...

  3. 在Red Hat Enterprise Linux 7.3上安装SQL Server 2017

    必要条件: 1.在此快速安装过程中,您需要安装SQL Server 2017或SQL Server 2019上Red Hat Enterprise Linux (RHEL) 7.3 +.然后使用sql ...

  4. Linux Centos 系统上安装BT客户端 Transmission

    Linux Centos 系统上安装BT客户端 Transmission   Transmission是一种BitTorrent客户端,特点是一个跨平台的后端和其上的简洁的用户界面,以MIT许可证和G ...

  5. Linux CentOS系统上安装Eclipse

    Linux CentOS系统上安装Eclipse 1. 下载Eclipse软件 下载网址:http://www.eclipse.org/downloads/packages/release/Juno/ ...

  6. Linux CentOS-7.0上安装Tomcat7

    Linux CentOS-7.0上安装Tomcat7   安装说明 安装环境:CentOS-7.0.1406安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址: ...

  7. 在 Linux Mint 19 上安装 zsh 和设置小键盘一步到位

    在 Linux Mint 19 上安装 zsh 和设置小键盘 安装 zsh 并设置 zsh 为默认 shell 安装 sudo apt install zsh 设置 zsh 为默认 shell,注意没 ...

  8. 在Ubuntu上建立Arm Linux 开发环境

    我使用的是友善2410的板子,以前都是用Fedora,现在家里的电脑被我转为Linux专用的了,装的是Ubuntu.但是嵌入式还是要玩的,在装载过程中也遇到一些小麻烦.在此记录一下,一来自己比较健忘, ...

  9. Android 在Windows上安装FFmpeg程序

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频编解码库libavcodec. 该程序 ...

  10. 成功移植SQLite3到ARM Linux开发板

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...

随机推荐

  1. Codeforces Round #584 C. Paint the Digits

    链接: https://codeforces.com/contest/1209/problem/C 题意: You are given a sequence of n digits d1d2-dn. ...

  2. redis在应用中使用连接不释放问题解决

    今天测试,发现redis使用的时候,调用的链接一直不释放.后查阅蛮多资料,才发现一个配置导致的.并不是他们说的服务没有启动导致的. 1)配置文件 #redis连接配置================= ...

  3. [Javascript] Nested generators

    To see how to call another generator inside a generator: function* numbers () { ; ; yield* moreNumbe ...

  4. 使用docker配置gitlab服务器

    下载gitlab镜像,导入 [root@gitlab ~]# docker load < gitlab_zh.tar 容器需要22端口,所以修改ssh的默认端口 [root@gitlab ~]# ...

  5. Oracle 物理结构(一) 文件-Inventory

    一.Inventory的定义与作用 oraInventory存放的是Oracle软件安装的目录信息,Oralce的安装升级都需要用到这个目录,来看看Oracle文档中对这个目录的一点说明:All Or ...

  6. Gradle 如何配置将编译的 JAR 发布到 Archiva 中

    有时候我们希望将我们的jar 开发包发布到 Archiva 中. 如何配置 Gradle 的编译脚本呢? 首先你需要启用 Gradle 的 Maven-publish 插件. plugins { id ...

  7. CF917D Stranger Trees【矩阵树定理,高斯消元】

    题目链接:洛谷 题目大意:给定一个$n$个节点的树$T$,令$ans_k=\sum_{T'}[|T\cap T'|=k]$,即有$k$条边重合.输出$ans_0,ans_1,\ldots,ans_{n ...

  8. Java并发概念-1

    一,同步 和 异步: 同步:调用方需要等待被调用方回应之后,才能进行下一步动作. 异步:调用方不需要等待被调用方回应,直接继续自己的动作.在未来某个时间点可能会有被调用方的回应. 二,并发 和 并行 ...

  9. [题解] [CF 1250J] The Parade

    题面 题目大意: 给定一个 \(n\) , 所有军人的数量均在 \([1, n]\) 给定 \(a_i\) 代表高度为 \(i\) 的军人的个数 你要将这些军人分成 \(k\) 行, 满足下面两个条件 ...

  10. OpenDayLight Beryllium版本 下发流表实现hardtimeout

    1. 实验拓扑 2. 创建拓扑 from mininet.topo import Topo class MyTopo(Topo): def __init__(self): # initilaize t ...