小白编译的过程,请指点

1.在Linux上准备交叉编译环境

1.1准备交叉编译链,文件夹名字叫Euler_compile_env_cross,申请把

1.2修改/etc/profile文件,在最后一行添加

export PATH=$PATH:/home/hy/Desktop/compile/Euler_compile_env_cross/arm/cross_compile/install/bin

我的解压目录是/home/hy/Desktop/compile/Euler_compile_env_cross,这里修改成自己的目录

1.3应用更改

source /etc/profile

我这里不允许这样,只能sudo -i /etc/profile, 但这样有弊端,保险起见,直接重启机器

1.4 重启后看是否生效

aarch64-linux-gnu-g++ -v

打印一长串东西,有版本什么的,环境就配置完成了

2. 交叉编译librtmp

2.1编译zlib

下载地址 zlib.net,我这里用的1.2.11版本

tar -xvzf zlib-1.2.11.tar.gz

cd zlib-1.2.11

CC=aarch64-linux-gnu-gcc ./configure --prefix=/usr/local/aarch64/zlib

make

sudo make install

上面的prefix是你的安装目录,要记住,到时候要拷贝文件,下同

2.2.编译openssl

下载地址 https://github.com/openssl/openssl/releases

解压:

tar -xvzf openssl-OpenSSL_1_0_2r.tar.gz

输入命令:

CC=aarch64-linux-gnu-gcc \

CXX=aarch64-linux-gnu-g++ \

AR=aarch64-linux-gnu-ar \

RANLIB=aarch64-linux-gnu-ranlib \

NM=aarch64-linux-gnu-nm \

./config shared no-asm --prefix=/usr/local/aarch64/openssl

其中shared 是动态库,no-asm是在交叉编译时不使用汇编加速

打开Makefile文件,删除所有的-m64

make

sudo make install

安装libssl-dev:

由于是EulerOS基于fedora,所以用sudo yum install openssl-devel

设置环境变量(在/etc/profile文件最后添加):

export OPENSSL=/usr/local/aarch64/openssl/bin

export PATH=$OPENSSL:$PATH:$HOME/bin

C_INCLUDE_PATH=/usr/local/aarch64/openssl/include/

export C_INCLUDE_PATH

CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/aarch64/openssl/include/

export CPLUS_INCLUDE_PATH

应用环境变量修改:

sudo -i source /etc/profile

2.3.编译librtmp

下载 git clone git://git.ffmpeg.org/rtmpdump

修改rtmpdump/Makefile:

修改:

prefix=/usr/local/aarch64/librtmp

LIB_OPENSSL=-lssl -lcrypto $(LIBZ) -ldl

新增:

CROSS_COMPILE=aarch64-linux-gnu-

XCFLAGS=-I/usr/local/aarch64/openssl/lib -I/usr/local/aarch64/zlib/lib

XLDFLAGS=-L/usr/local/aarch64/openssl/lib -L/usr/local/aarch64/zlib/lib

修改rtmpdump/librtmp/Makefile:

修改:

prefix=/usr/local/aarch64/librtmp

新增:

CROSS_COMPILE=aarch64-linux-gnu-

XCFLAGS=-I/usr/local/aarch64/openssl/include -I/usr/local/aarch64/zlib/include -L/usr/local/aarch64/openssl/lib -L/usr/local/aarch64/zlib/lib

编译安装

make

sudo make install

3.交叉编译安装x264

下载 https://code.videolan.org/videolan/x264

tar -xvzf x264-master.tar.gz

cd x264-master

./configure \

--prefix=/usr/local/aarch64/x264 \

--host=aarch64-linux \

--cross-prefix=aarch64-linux-gnu- \

--enable-shared \

--enable-static

make

sudo make install

4.交叉编译ffmpeg

4.1下载源码,我这里用的4.2.3版本

tar -jxvf ffmpeg-4.2.3.tar.bz2

修改/etc/profile,添加一行:

export PKG_CONFIG_PATH=/usr/local/aarch64/librtmp/lib/pkgconfig:/usr/local/aarch64/openssl/lib/pkgconfig:/usr/local/aarch64/x264/lib/pkgconfig:$PKG_CONFIG_PATH

写完别忘了sudo -i source /etc/profile

4.2编译安装aarch64版本ffmpeg

进入ffmpeg解压目录

./configure \

--prefix=/usr/local/aarch64/ffmpeg \

--target-os=linux \

--arch=aarch64 \

--enable-cross-compile \

--cross-prefix=aarch64-linux-gnu- \

--enable-shared \

--disable-doc \

--enable-libx264 \

--enable-openssl \

--enable-librtmp \

--enable-gpl --enable-nonfree --pkg-config=pkg-config

make

sudo make install

假如提示 /bin/sh: aarch64-linux-gnu-ranlib: command not found, 参见第一步

5. 在Atlas500上测试

新建目录, 就叫ffmpeg把,放到哪里无所谓

进入/usr/local/aarch64目录,这里有我们编译好的x264,zlib,openssl,ffmpeg,librtmp,把对应的bin目录和lib目录里面

的可执行文件(bin目录的执行文件,lib目录的动态库),统统拷贝到刚创建的ffmpeg目录

想办法把ffmpeg目录放到Atlas500上面去(可以用nfs进行共享,如何共享,有需要的小伙伴可以留言,这里就不说了),

为了能在任何地方都能输入ffmpeg命令,我们把ffmpeg目录加入到环境变量(/etc/profile)

export PATH=/opt/ffmpeg:$PATH

假设我们把linux的ffmpeg目录拷贝到了Atlas上的/opt/ffmpeg目录

sudo -i source /etc/profile

现在,输入ffmpeg命令测试把

librtmp linux下 编译,交叉编译能在Atlas500(aarch64)上运行的ffmpeg+x264+librtmp相关推荐

  1. linux取消头文件链接,【原创】Linux下编译链接中常见问题总结

    前言 一直以来对Linux下编译链接产生的问题没有好好重视起来,出现问题就度娘一下,很多时候的确是在搜索帮助下解决了BUG,但由于对原因不求甚解,没有细细研究,结果总是在遇到在BUG时弄得手忙脚乱得. ...

  2. Linux错误27,解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”...

    centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装 ...

  3. linux 保存编译log,(转)Linux下编译安装log4cxx

    一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...

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

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

  5. 一份简单的在 Linux下编译及调试 C 代码的指南

    摘要: 一份简单的在 Linux下编译及调试 C 代码的指南 对于Linux下的C程序员来说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无 ...

  6. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  7. linux emule 编译 wx-config --libs,linux下编译wxwidgets所写程序所遇到的问题

    记录linux下编译wxwidgets所遇到的问题 1./home/hrd/baohualib/wxWidgets-3.0.2/include/wx/platform.h:184:22: 致命错误: ...

  8. linux下编译wpa_supplicantnbsp;…

    linux下编译wpa_supplicant 收藏 前一段时间只在vs2005下编译成功过.经过近一段时间的琢磨,今天终于在linux下成功编译了wpa_supplicant. 挺简单的事情折腾了这么 ...

  9. java libpcap,Linux下编译安装libpcap

    要做Sniffer了,先在Linux下编译一下libpcap 1.编译安装flex #libpcap 1.1要求flex必须在2.4.6及以上 wget http://prdownloads.sour ...

最新文章

  1. 6个月为50篇AI论文写摘要,网友:这有啥,我曾被要求1.5小时内复现一篇论文...
  2. 天谕手游与奥特曼联手,玩家看到有多么激动?
  3. Almost Union-Find UVA - 11987(并查集的删除操作)
  4. 送书 | 人类细胞图谱计划发起人Aviv Regev博士讲单细胞基因组学
  5. 将一个16进制数转化为10进制数
  6. python sublime 提示补全_【原创】Sublime+Verilator建立强大的verilog编写环境
  7. Android Layout标签之-viewStub,requestFocus,merge,include
  8. 利用SPI编写类似sockscap的代理工具
  9. SPSS数据分析之多选题定义
  10. 拆解一探电路设计:小米路由器3C拆解
  11. Android窗口被隐藏了怎么办,Android studio中IDE窗口怎么显示或者隐藏?
  12. 代码参考--点击文本,即可复制
  13. 题解-[Usaco2005 Mar]Out of Hay 干草危机
  14. 在MT终端模拟器中使用Termux命令
  15. 牛排生熟程度 英语说法
  16. ionic 中的折线图与柱状图
  17. java多线程概念、实现、状态和生命周期、同步、通信
  18. 七年级计算机教案模板范文,七年级信息技术论文大纲模板 七年级信息技术论文提纲怎样写...
  19. jar文件读取和遍历
  20. 逆向工程学习笔记(4):fld指令

热门文章

  1. pycharm--opencv报错解决
  2. 不了解DevOps你落伍了
  3. 百度移动搜索自动转码太坑爹,JS跳转地址会被抓取
  4. linux如何查看kafka消息队列,kafka以及消息队列详解
  5. redis过期推送操作及问题汇总
  6. html中绝对定位如何写,CSS如何进行绝对定位
  7. 继承,封装,多态和值传递引用传递
  8. C语言中自定义函数返回数组类型
  9. 关于项目的众包功能 7-9
  10. 有符号数(signed) 和 无符号数(unsigned)