服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - nginx rtmp模块编译 arm版本的问题

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

2022-01-18 19:30原十 Nginx

这篇文章主要介绍了nginx rtmp模块编译 arm版本的问题,pcre库和libz库都不用单独编译,在编译nginx时添加模块时一起编译,需要的朋友可以参考下

今天搞了一天,终于把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 配置

?
1
2
3
4
5
6
7
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

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

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

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

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

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

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

2,编译错误

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

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

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

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

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

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

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

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

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

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

2) ipv6问题

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

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

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

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

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

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

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

4) 找不到ssl库和crypto库

objs/makefile 里有如下链接

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

最后链接时出错 

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

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

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

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

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

三、目标板上执行

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

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

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

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

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

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

已经看到在监听1935端口。

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

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

原文链接:https://blog.csdn.net/tianyexing2008/article/details/122149109

延伸 · 阅读

精彩推荐
  • Nginx利用nginx和腾讯云免费证书制作https的方法

    利用nginx和腾讯云免费证书制作https的方法

    这篇文章主要介绍了利用nginx和腾讯云免费证书制作https的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    dalaoyang5992019-12-30
  • NginxNginx动静分离实现案例代码解析

    Nginx动静分离实现案例代码解析

    这篇文章主要介绍了Nginx动静分离实现案例代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    盗哥泡茶去了3382020-09-27
  • Nginx通过Nginx规则重写URL去掉index.php不显示index.php

    通过Nginx规则重写URL去掉index.php不显示index.php

    Nginx不仅占用内存少,并发能力强,而且拓展功能丰富,可以通过安装模板来强化功能,也能通过规则优化,优化服务器并发处理能力,是建站的不二之选...

    Genius日记5872020-10-16
  • Nginxnginx rewrite 伪静态配置参数和使用例子

    nginx rewrite 伪静态配置参数和使用例子

    nginx下伪静态配置参数详细说明,使用nginx的朋友,nginx rewrite 伪静态配置参数和使用例子 附正则使用说明 ...

    服务器之家3102019-10-08
  • Nginxnginx ssl免密码重启教程详解

    nginx ssl免密码重启教程详解

    这篇文章给大家介绍了nginx 如何启动以及nginx ssl 免密码重启 的方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧 ...

    mrr4272019-11-19
  • NginxNginx location 和 proxy_pass路径配置问题小结

    Nginx location 和 proxy_pass路径配置问题小结

    本文是基于 location 的匹配末尾是否配置 / 和 proxy_pass 末尾是否配置 / ,进行测试,完全还原了整个测试过程,本文给大家介绍Nginx location 基本配置及相关配...

    自由早晚乱余生18742021-09-24
  • NginxNginx Rewrite使用场景及代码案例详解

    Nginx Rewrite使用场景及代码案例详解

    这篇文章主要介绍了Nginx Rewrite使用场景及代码案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    盗哥泡茶去了11862020-09-27
  • Nginx如何优化Nginx的处理性能

    如何优化Nginx的处理性能

    Nginx是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服务不错的替代品。其特点是占有内存少,...

    Dockone.io5142020-12-11