librtmp linux下 编译,交叉编译能在Atlas500(aarch64)上运行的ffmpeg+x264+librtmp
小白编译的过程,请指点
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相关推荐
- linux取消头文件链接,【原创】Linux下编译链接中常见问题总结
前言 一直以来对Linux下编译链接产生的问题没有好好重视起来,出现问题就度娘一下,很多时候的确是在搜索帮助下解决了BUG,但由于对原因不求甚解,没有细细研究,结果总是在遇到在BUG时弄得手忙脚乱得. ...
- 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库文件. 安装 ...
- linux 保存编译log,(转)Linux下编译安装log4cxx
一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...
- linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置
一.linux下编译make文件报错"/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/415 ...
- 一份简单的在 Linux下编译及调试 C 代码的指南
摘要: 一份简单的在 Linux下编译及调试 C 代码的指南 对于Linux下的C程序员来说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无 ...
- linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt
[2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...
- linux emule 编译 wx-config --libs,linux下编译wxwidgets所写程序所遇到的问题
记录linux下编译wxwidgets所遇到的问题 1./home/hrd/baohualib/wxWidgets-3.0.2/include/wx/platform.h:184:22: 致命错误: ...
- linux下编译wpa_supplicantnbsp;…
linux下编译wpa_supplicant 收藏 前一段时间只在vs2005下编译成功过.经过近一段时间的琢磨,今天终于在linux下成功编译了wpa_supplicant. 挺简单的事情折腾了这么 ...
- java libpcap,Linux下编译安装libpcap
要做Sniffer了,先在Linux下编译一下libpcap 1.编译安装flex #libpcap 1.1要求flex必须在2.4.6及以上 wget http://prdownloads.sour ...
最新文章
- 6个月为50篇AI论文写摘要,网友:这有啥,我曾被要求1.5小时内复现一篇论文...
- 天谕手游与奥特曼联手,玩家看到有多么激动?
- Almost Union-Find UVA - 11987(并查集的删除操作)
- 送书 | 人类细胞图谱计划发起人Aviv Regev博士讲单细胞基因组学
- 将一个16进制数转化为10进制数
- python sublime 提示补全_【原创】Sublime+Verilator建立强大的verilog编写环境
- Android Layout标签之-viewStub,requestFocus,merge,include
- 利用SPI编写类似sockscap的代理工具
- SPSS数据分析之多选题定义
- 拆解一探电路设计:小米路由器3C拆解
- Android窗口被隐藏了怎么办,Android studio中IDE窗口怎么显示或者隐藏?
- 代码参考--点击文本,即可复制
- 题解-[Usaco2005 Mar]Out of Hay 干草危机
- 在MT终端模拟器中使用Termux命令
- 牛排生熟程度 英语说法
- ionic 中的折线图与柱状图
- java多线程概念、实现、状态和生命周期、同步、通信
- 七年级计算机教案模板范文,七年级信息技术论文大纲模板 七年级信息技术论文提纲怎样写...
- jar文件读取和遍历
- 逆向工程学习笔记(4):fld指令