| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> nginx rtmp模块编译 arm版本 -> 正文阅读 |
|
[系统运维]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 配置
因为我要编译的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指定的目录目标板子上没有,那就是运行不成功的,这个要怎么修改呢?还没查到,有知道的同学麻烦告知一下。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 6:26:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |