若要使用 Nginx 的 nginx-rtmp-module
,需要自行下載 source code 並重新編譯 Nginx,本文記錄其編譯過程。
Version
Ubuntu 20.04
Nginx 1.18.0
Nginx-rtmp-module 1.2.1
Nginx-rtmp-module
$ sudo -i
$ cd /usr/local
$ wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz
$ tar -xvzf ./v1.2.1.tar.gz
$ cd ./nginx-1.18.0
$ apt update
$ apt -y install openssl libssl-dev
$ ./configure --add-module=../nginx-rtmp-module-1.2.1 --prefix=/usr/local/nginx
第 2 行
$ cd /usr/local
Working directory 在 /usr/local
,其中 Nginx 的 source code 已經下載至 /usr/local/nginx-1.18.0
,且 nginx-rtmp-module
的 souce code 也將下載在此目錄下。
第 3 行
$ wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz
下載 nginx-rtmp-module
的 source code。
第 4 行
$ tar -xvzf ./v1.2.1.tar.gz
使用 tar
解壓縮為 nginx-rtmp-module-1.2.1
目錄。
第 5 行
$ cd ./nginx-1.18.0
進入 nginx-1.18.0
目錄,此為 Nginx source code 所在,即將開始編譯 Nginx。
第 6 行
$ apt update
$ apt -y install openssl libssl-dev
nginx-rtmp-module
編譯過程需要 openssl。
第 8 行
$ ./configure --add-module=../nginx-rtmp-module-1.2.1 --prefix=/usr/local/nginx
使用 configure
產生 makefile。
--add-module
:設定nginx-rtmp-module
的 source code 目錄供 Nginx 編譯使用--prefix
:設定 Nginx 編譯之後將安裝的目錄
$ cd objs
$ vim Makefile
configure
所產生的 makefile 會導致編譯失敗,需要做些修改,進入 objs
目錄修改 Makefile
。
CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -Wno-implicit-fallthrough
在 Makefile
的 CFLAGS
最後加上 -Wno-implicit-fallthrough
。
因爲 nginx-rtmp-module
的 source code 在 switch
使用了 fall through
寫法導致無法編譯,須在 CFLAGS
加上 -Wno-implicit-fallthrough
避免 gcc
編譯錯誤。
$ cd ..
$ make && make install
回到 Nginx 目錄下編譯 Nginx。
Conclusion
fall through
可能跟gcc
的版本與預設編譯參數有關,若以 Ubuntu 20.04 的環境而言,編譯nginx-rtmp-module
需手動修改 makefile 才能編譯成功