nginx?rtmp模塊編譯?arm版本的問(wèn)題
今天搞了一天,終于把nginx增加支持rtmp模塊編譯出來(lái)了,其中遇到了很多問(wèn)題,記錄下這篇文章,希望可以幫到遇到此類問(wèn)題的同學(xué)。
一、準(zhǔn)備工作:
1,下載nginx源碼:wget http://xiazai.jb51.net/202112/yuanma/nginx_jb51.rar
2,下載依賴庫(kù)libpcre.a源碼:wget?http://ftp.cs.stanford.edu/pub/exim/pcre/pcre-8.39.tar.gz
3,下載依賴庫(kù)libz.a源碼:?wget? http://xiazai.jb51.net/202112/yuanma/pcre_jb51.rar
4,下載rtmp模塊源碼:GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server
前三個(gè)庫(kù)源碼下載完成后,都進(jìn)行解壓。
二、源碼編譯
pcre庫(kù)和libz庫(kù)都不用單獨(dú)編譯,在編譯nginx時(shí)添加模塊時(shí)一起編譯。
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時(shí)生成的程序放在這個(gè)目錄下 // --add-module=/home/tianyexing/Documents/tools/nginx_rtmp/nginx-rtmp-module-master 編譯rtmp模塊,這個(gè)目錄是上面下載源碼后解壓的目錄 // --with-pcre=/home/tianyexing/Documents/tools/pcre/pcre-8.39 編譯pcre模塊,這個(gè)目錄是上面下載源碼后解壓的目錄 // --with-zlib=/home/tianyexing/Documents/tools/zlib/zlib-1.2.11 編譯zlib模塊,這個(gè)目錄是上面下載源碼后解壓的目錄
因?yàn)槲乙幾g的arm-himix200-linux版本,但nginx源碼目錄下的configure不支持--host,然后用
--with-cc=arm-himix200-linux-gcc時(shí)也會(huì)出錯(cuò),于是只能選擇手動(dòng)修改(修改點(diǎn)下面會(huì)講到)。執(zhí)行后會(huì)在當(dāng)前目錄下生成objs和Makefile。
1) 修改objs/Makefile

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

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

其他修改可以去搜索一下,因?yàn)樾薷暮脦讉€(gè)已經(jīng)不記得了。
2,編譯錯(cuò)誤
直接在nginx源碼目錄下make就行,因?yàn)樗锩鎴?zhí)行的就是objs/Makefile
1)找不到openssl/ssl.h頭文件,如:

?系統(tǒng)中是已經(jīng)有openssl/ssl.h文件的,是系統(tǒng)目錄/usr/include下

但編譯時(shí)就是提示找不到,不知是否跟編譯arm版本有關(guān),因?yàn)槲艺糜羞@個(gè)arm版本的openssl頭文件,所以這里沒(méi)去糾結(jié),把別處的openssl目錄拷貝過(guò)來(lái)直接用了,不過(guò)添加頭文件目錄后,需要修改objs/Makefile,我新加的頭文件目錄是在nginx源碼目錄src下,修改如下:

這個(gè)CORE_INCS是編譯nginx要用到的頭文件。

這個(gè)是其他模塊,nginx-rtmp, pcre, zlib 可能用到的頭文件目錄。
2) IPv6問(wèn)題
?
提示找不到這個(gè)定義,但這個(gè)定義在系統(tǒng)是有的,?這里也不糾結(jié),不用ipv6,所把相關(guān)的代碼注釋掉了。
3)Archive has no index; run ranlib to add? one ---- 庫(kù)平臺(tái)不匹配問(wèn)題

?因?yàn)檫@當(dāng)中編譯過(guò)很多次,x86版本,arm版本都編譯過(guò),然后并沒(méi)有make clean,這里用了之前的x86版本的庫(kù),所以這里提示錯(cuò)誤了,因?yàn)槲乙幾garm-himix200-linux版本,查看庫(kù)信息如:

?所以需要make clean,然后再執(zhí)行上面的configure 重新生成Makefile。
4) 找不到ssl庫(kù)和crypto庫(kù)
objs/Makefile 里有如下鏈接

最后鏈接時(shí)出錯(cuò)?
?
這個(gè)arm版本的庫(kù),我之前編譯過(guò)的,然后直接修改成絕對(duì)路徑。若是沒(méi)有這兩個(gè)庫(kù)google一下。

?
最終編譯出我arm版本,x86版本。
三、目標(biāo)板上執(zhí)行
?拷貝到arm版上執(zhí)行時(shí),失敗了,但沒(méi)有提示信息,結(jié)果是用?nginx -s reload得出錯(cuò)誤信息,如:

?因?yàn)樵赾onfigure配置時(shí),是指定安裝目錄--prefix=/usr/sbin,在編譯完成后,會(huì)在/usr/sbin下新建了三個(gè)目錄 sbin、conf、logs,各目錄如:

?于是在arm板子上對(duì)應(yīng)的新建sbin, conf, logs目錄,并將其目錄下的文件全部拷貝過(guò)去,結(jié)果運(yùn)行成功了:

已經(jīng)看到在監(jiān)聽1935端口。
之前也編譯出來(lái)過(guò)arm版本,也是運(yùn)行不成功,因?yàn)閏onfigure時(shí)prefix指定安裝路徑是pc上一個(gè)目錄,結(jié)果也是出現(xiàn)如上的open()的錯(cuò)誤。那如果configure配置時(shí),--prefix指定的目錄目標(biāo)板子上沒(méi)有,那就是運(yùn)行不成功的,這個(gè)要怎么修改呢?還沒(méi)查到,有知道的同學(xué)麻煩告知一下。
到此這篇關(guān)于nginx rtmp模塊編譯 arm版本的文章就介紹到這了,更多相關(guān)nginx rtmp模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nginx-rtmp-module模塊實(shí)現(xiàn)視頻點(diǎn)播的示例代碼
- Nginx安裝nginx-rtmp-module模塊的實(shí)現(xiàn)
- 通俗易懂講解nginx-rtmp-module
- nginx-rtmp-module構(gòu)建流媒體直播服務(wù)器實(shí)戰(zhàn)指南
- nginx臨時(shí)搭建rtmp服務(wù)器的方法實(shí)現(xiàn)
- nginx?搭建http-flv(rtmp)流媒體的方法步驟
- Nginx搭建RTMP流媒體服務(wù)器的實(shí)現(xiàn)
- 使用Nginx搭載rtmp直播服務(wù)器的方法
- Nginx搭建rtmp直播服務(wù)器實(shí)現(xiàn)代碼
- Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果
- Centos基于Nginx搭建RTMP服務(wù)器的實(shí)現(xiàn)
相關(guān)文章
nginx如何配置同一個(gè)端口轉(zhuǎn)發(fā)多個(gè)項(xiàng)目
這篇文章主要介紹了nginx如何配置同一個(gè)端口轉(zhuǎn)發(fā)多個(gè)項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
nginx 老網(wǎng)站域名重定向到新網(wǎng)站的方法(親測(cè))
本文主要介紹了nginx 老網(wǎng)站域名重定向到新網(wǎng)站的方法,以減少業(yè)務(wù)影響并確保流量導(dǎo)向新域名,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Mac中使用Nginx實(shí)現(xiàn)80端口轉(zhuǎn)發(fā)8080端口
端口轉(zhuǎn)發(fā)(Port forwarding),有時(shí)被叫做隧道,是安全殼(SSH) 為網(wǎng)絡(luò)安全通信使用的一種方法。端口轉(zhuǎn)發(fā)是轉(zhuǎn)發(fā)一個(gè)網(wǎng)絡(luò)端口從一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)到另一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的行為,其使一個(gè)外部用戶從外部經(jīng)過(guò)一個(gè)被激活的NAT路由器到達(dá)一個(gè)在私有內(nèi)部IP地址(局域網(wǎng)內(nèi)部)上的一個(gè)端口2017-09-09
Nginx服務(wù)器的反向代理proxy_pass配置方法講解
這篇文章主要介紹了Nginx服務(wù)器的反向代理proxy_pass配置方法講解,包括經(jīng)常被提到的url的/問(wèn)題的相關(guān)說(shuō)明,需要的朋友可以參考下2016-01-01
前端開發(fā)用得著的nginx配置(場(chǎng)景)
這篇文章主要介紹了前端開發(fā)用得著的nginx配置,前端的工作過(guò)程里,本地開發(fā)、提供測(cè)試環(huán)境,總得有個(gè)用著順手的服務(wù)器軟件,這個(gè)場(chǎng)景里nginx很流行,特分享下需要的朋友可以參考下2014-09-09
Nginx動(dòng)靜分離配置實(shí)現(xiàn)與說(shuō)明
這篇文章主要介紹了Nginx動(dòng)靜分離配置實(shí)現(xiàn)與說(shuō)明,需要的朋友可以參考下2022-04-04
解決Nginx轉(zhuǎn)發(fā)圖片不能顯示的問(wèn)題
在使用Nginx作為反向代理將iServer的HTTP協(xié)議轉(zhuǎn)換為HTTPS協(xié)議時(shí),可能會(huì)遇到靜態(tài)資源無(wú)法加載、頁(yè)面跳轉(zhuǎn)回HTTP協(xié)議、訪問(wèn)服務(wù)管理界面權(quán)限問(wèn)題等情況,本文給大家介紹解決Nginx轉(zhuǎn)發(fā)圖片不能顯示的問(wèn)題,感興趣的朋友一起看看吧2024-11-11
Nginx配置網(wǎng)頁(yè)轉(zhuǎn)發(fā)的實(shí)現(xiàn)步驟
本文主要介紹了Nginx配置網(wǎng)頁(yè)轉(zhuǎn)發(fā)的實(shí)現(xiàn)步驟,實(shí)現(xiàn)將云服務(wù)器的80端口轉(zhuǎn)發(fā)到另一臺(tái)服務(wù)器部署的網(wǎng)頁(yè),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
nginx利用referer指令實(shí)現(xiàn)防盜鏈配置
nginx模塊ngx_http_referer_module通常用于阻擋來(lái)源非法的域名請(qǐng)求,我們應(yīng)該牢記。下面這篇文章主要介紹了nginx利用referer指令實(shí)現(xiàn)防盜鏈配置的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-03-03

