• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
維健_廣律 显示全部楼层 发表于 2022-1-7 16:44:54 |阅读模式 打印 上一主题 下一主题
目录


  • 一、预备工作:
  • 二、源码编译

    • 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/exim/pcre/pcre-8.39.tar.gz
3,下载依靠库libz.a源码: wget  http://xiazai.jb51.net/202112/yuanma/pcre_jb51.rar
4,下载rtmp模块源码:GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server
前三个库源码下载完成后,都举行解压。

二、源码编译

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

1,configure 设置
  1. cd nginx-1.20.2 //切换到nginx源码目录下
  2. ./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
  3. // --prefix=/usr/sbin  指定安装目录,最后install时生成的程序放在这个目录下
  4. // --add-module=/home/tianyexing/Documents/tools/nginx_rtmp/nginx-rtmp-module-master  编译rtmp模块,这个目录是上面下载源码后解压的目录
  5. // --with-pcre=/home/tianyexing/Documents/tools/pcre/pcre-8.39 编译pcre模块,这个目录是上面下载源码后解压的目录
  6. // --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模块内容请搜索草根技能分享以前的文章或继续欣赏下面的相关文章希望各人以后多多支持草根技能分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作