nginx rtmp模块编译 arm版本的问题

今天搞了一天,终于把nginx增加支持rtmp模块编译出来了,其中遇到了很多问题,记录下这篇文章,希望可以帮到遇到此类问题的同学。

一、准备工作:

1,下载nginx源码:wget http://nginx.org/download/nginx-1.20.2.tar.gz

2,下载依赖库libpcre.a源码:wget http://ftp.cs.stanford.edu/pub/exim/pcre/pcre-8.39.tar.gz

3,下载依赖库libz.a源码: wget https://downloads.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz

4,下载rtmp模块源码:GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server

前三个库源码下载完成后,都进行解压。

二、源码编译

pcre库和libz库都不用单独编译,在编译nginx时添加模块时一起编译。

1,configure 配置

cd nginx-1.20.2 //切换到nginx源码目录下
./configure --prefix=/usr/sbin --add-module=/home/tianyexing/Documents/tools/nginx_rtmp/nginx-rtmp-module-master --with-http_ssl_module --with-debug --with-pcre=/home/tianyexing/Documents/tools/pcre/pcre-8.39 --with-zlib=/home/tianyexing/Documents/tools/zlib/zlib-1.2.11

// --prefix=/usr/sbin  指定安装目录,最后install时生成的程序放在这个目录下
// --add-module=/home/tianyexing/Documents/tools/nginx_rtmp/nginx-rtmp-module-master  编译rtmp模块,这个目录是上面下载源码后解压的目录
// --with-pcre=/home/tianyexing/Documents/tools/pcre/pcre-8.39 编译pcre模块,这个目录是上面下载源码后解压的目录
// --with-zlib=/home/tianyexing/Documents/tools/zlib/zlib-1.2.11 编译zlib模块,这个目录是上面下载源码后解压的目录

因为我要编译的arm-himix200-linux版本,但nginx源码目录下的configure不支持--host,然后用

--with-cc=arm-himix200-linux-gcc时也会出错,于是只能选择手动修改(修改点下面会讲到)。执行后会在当前目录下生成objs和Makefile。

1) 修改objs/Makefile

2) 修改nginx-1.20.2/auto/cc/conf文件,如:

 3) 修改 nginx-1.20.2/auto/types/sizeof ,如:

其他修改可以去搜索一下,因为修改好几个已经不记得了。

2,编译错误

直接在nginx源码目录下make就行,因为它里面执行的就是objs/Makefile

1)找不到openssl/ssl.h头文件,如:

 系统中是已经有openssl/ssl.h文件的,是系统目录/usr/include下

但编译时就是提示找不到,不知是否跟编译arm版本有关,因为我正好有这个arm版本的openssl头文件,所以这里没去纠结,把别处的openssl目录拷贝过来直接用了,不过添加头文件目录后,需要修改objs/Makefile,我新加的头文件目录是在nginx源码目录src下,修改如下:

这个CORE_INCS是编译nginx要用到的头文件。

这个是其他模块,nginx-rtmp, pcre, zlib 可能用到的头文件目录。

2) IPv6问题

 

提示找不到这个定义,但这个定义在系统是有的, 这里也不纠结,不用ipv6,所把相关的代码注释掉了。

3)Archive has no index; run ranlib to add  one ---- 库平台不匹配问题

 因为这当中编译过很多次,x86版本,arm版本都编译过,然后并没有make clean,这里用了之前的x86版本的库,所以这里提示错误了,因为我要编译arm-himix200-linux版本,查看库信息如:

 所以需要make clean,然后再执行上面的configure 重新生成Makefile。

4) 找不到ssl库和crypto库

objs/Makefile 里有如下链接

最后链接时出错 

 

这个arm版本的库,我之前编译过的,然后直接修改成绝对路径。若是没有这两个库google一下。

 

最终编译出我arm版本,x86版本。

三、目标板上执行

 拷贝到arm版上执行时,失败了,但没有提示信息,结果是用 nginx -s reload得出错误信息,如:

 因为在configure配置时,是指定安装目录--prefix=/usr/sbin,在编译完成后,会在/usr/sbin下新建了三个目录 sbin、conf、logs,各目录如:

 于是在arm板子上对应的新建sbin, conf, logs目录,并将其目录下的文件全部拷贝过去,结果运行成功了:

已经看到在监听1935端口。

之前也编译出来过arm版本,也是运行不成功,因为configure时prefix指定安装路径是pc上一个目录,结果也是出现如上的open()的错误。那如果configure配置时,--prefix指定的目录目标板子上没有,那就是运行不成功的,这个要怎么修改呢?还没查到,有知道的同学麻烦告知一下。

到此这篇关于nginx rtmp模块编译 arm版本的文章就介绍到这了,更多相关nginx rtmp模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • nginx使用nginx-rtmp-module模块实现直播间功能

    系统环境 wujianjun@wujianjun-work ~ $ uname -a Linux wujianjun-work 4.10.0-37-generic #41~16.04.1-Ubuntu SMP Fri Oct 6 22:42:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 软件环境 OBS(Open Broadcaster Software) v20.0.1 (Linux) nginx version: nginx/1.13.6 built

  • nginx rtmp模块编译 arm版本的问题

    今天搞了一天,终于把nginx增加支持rtmp模块编译出来了,其中遇到了很多问题,记录下这篇文章,希望可以帮到遇到此类问题的同学. 一.准备工作: 1,下载nginx源码:wget http://nginx.org/download/nginx-1.20.2.tar.gz 2,下载依赖库libpcre.a源码:wget http://ftp.cs.stanford.edu/pub/exim/pcre/pcre-8.39.tar.gz 3,下载依赖库libz.a源码: wget https://d

  • nginx rtmp模块编译 arm版本的问题

    目录 一.准备工作: 二.源码编译 1,configure 配置 2,编译错误 三.目标板上执行 今天搞了一天,终于把nginx增加支持rtmp模块编译出来了,其中遇到了很多问题,记录下这篇文章,希望可以帮到遇到此类问题的同学. 一.准备工作: 1,下载nginx源码:wget http://xiazai.jb51.net/202112/yuanma/nginx_jb51.rar 2,下载依赖库libpcre.a源码:wget http://ftp.cs.stanford.edu/pub/exi

  • 详解Ubuntu18.04下配置Nginx+RTMP+HLS+HTTPFLV服务器实现点播/直播/录制功能

    2019.9.4更新 继续玩又发现个好玩的东西,nginx-http-flv-module模块,集成了之前的RTMP模块,又有httpflv模块,还是咱们国内程序员大神开发维护,真是开心,国内的大神如此出色,为他们这些愿意分享技术的人点32个赞,具体的编译和安装方式与RTMP模块基本一样,配置readme中也说得很详细,就不赘述了,需要注意的一点是,httpflv方式客户端想看也是需要服务设置cors的,这点readme中没有提到好像. 2019.6.27更新 再更新个windows版本的搭建方

  • Mac上搭建nginx+rtmp直播服务器的步骤详解

    前言 相信大家都知道nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,所以小编在网上整理了安装流程,现在分享给大家并且作备忘.有需要的朋友们可以参考学习,下面来一起看看吧. 一.安装Homebrow 已经安装了brow的可以直接跳过这一步. 执行命令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 如果已经安装过,而

  • 解决Maven多模块编译慢的问题

    目录 Maven多模块编译慢 完整命令如下 Maven多模块编译中遇到的坑 一.概述 二.坑描述和解决方法 踩坑描述 解决方法 Maven多模块编译慢 最近在部署项目时发现,Maven编译打包相当耗时,比之前项目用Gradle慢了很多倍,特别是对于WEB工程,打war包花的时间很长,在unix主机下一般会用到3到4分钟,如果有多个WEB工程,那简直不能忍受,经过查找资料并结合本人真实验证,原本编译打包需要8分钟的项目,优化编译后时间减少至34秒. 如下图: 其中下面标红两个工程为WEB工程.下面

  • Nginx源码编译安装过程记录

    rpm包安装比较简单,这里不做说明. 对于大多数开源软件,如果找不到安装包,可以使用源码安装方式,源码安装虽然没有yum.apt等工具方便,但是非常通用,在不同架构的cpu.不同操作系统的服务器上都可以使用这种方式. 使用源码编译安装的一般方式,通常是去github上搜索对应的软件名称,找到源码,选择适合的版本之后,查看源码目录下的readme.md文件(在github上这个文件其实就是这个源码的说明文档),如果readme.md里面没有介绍编译安装或者构建工程的步骤的说明,也会指明在哪里可以获

  • Nginx各个模块的配置及常用配置选项

    目录 Nginx Location配置 请求转发和重定向 Nginx静态文件配置 文件下载服务器 Nginx配置HTTPS Nginx日志配置 Nginx超时设置 请求超时设置 Proxy反向代理超时设置 Nginx负载均衡 轮询(默认) 权重(weight) ip_hash url_hash fair(第三方) Nginx与uWSGI服务器的沟通 小结 接下来,我们仔细分析下Nginx各个模块的配置选项.注意:http块也可以进一步分成3块,http全局块里的配置对所有站点生效,server块

  • Android 编译出错版本匹配问题解决办法

    Android 编译出错版本匹配问题解决办法 解决问题的关键在于版本匹配, compileSdkVersion compileSdkVersion targetSdkVersion 这三个参数的整数值都应该是一样的,这里我全部设置成23, 在这之前我还升级了:appcompat到com.Android.support:appcompat-v7:24.0.0 最终编译成功,剩下的问题都是代码问题了 apply plugin: 'com.android.application' android {

  • 完美解决Indy 编译提示版本不一致的问题

    1,起因 某delphi程序A使用了Indy9.0.18组件.机器中原本自带老版本的Indy组件9.0.12,后升级到9.0.18,使用一直正常. 某次操作将程序A重新build all了一下,结果提示如下信息,此后即便是compile也会出错. [Fatal Error] uMain.pas(11): Unit IdServerIOHandlerSocket was compiled with a different version of IdServerIOHandler.TIdServer

  • nginx http模块数据存储结构小结

    从本节开始,我们将进入http模块实现原理的讲解,关于http模块,有一个非常重要的点就是其是如何存储http块.server块和location块的数据的,而且nginx有的配置项是可以在多个配置块中使用的,当http块.server块和location块中两个或者两个以上的配置块都配置了该配置项的时候,就会有一个问题是,nginx是如何处理这些配置项的.本文主要讲解http块中的各个模块数据的存储方式,这将是理解nginx的http模块的工作方式的重要基石. 1. 核心模块的存储方式 在ng

随机推荐