Ubuntu20.04环境nginx集成PCRE、zlib、OpenSSL、nginx-rtmp-module多路推流交叉编译移植到arm64_linux步骤
注:目标架构:
arm
aarch64
芯片:RK3568j 鲁班猫2
1.下载nginx所有相关源代码
1.1下载 Nginx 源码
执行下面这条命令下载 Nginx 源码:
wget http://nginx.org/download/nginx-1.20.0.tar.gz
1.2下载 nginx-rtmp-module 模块
git clone https://github.com/arut/nginx-rtmp-module.git
1.3下载 OpenSSL
wget https://www.openssl.org/source/openssl-3.2.1.tar.gz
1.4下载 PCRE
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/download
1.5下载 zlib
wget https://zlib.net/fossils/zlib-1.3.tar.gz
2.安装交叉编译工具链
参考其他连接安装:跳转链接 ,安装完成后测试交叉编译器
注:此处已安装好交叉编译器,具体过程参考上面跳转链接,本文不深究
aarch64-linux-gnu-gcc -v
3.配置编译选项
3.1将下载得到的 nginx-1.20.0.tar.gz 文件进行解压:
tar -xzf nginx-1.20.0.tar.gz
3.2 在nginx-1.20.0/目录下创建install目录,最后用于存放编译后的安装文件
cd nginx-1.20.0
mkdir install
3.3 打开 nginx 源码目录下的 auto/cc/name 文件,将 21 行处的”exit 1”给注释掉
3.4 打开auto/types/sizeof文件,将15行处的ngx_size=
修改为”ngx_size=4
,并且将 36 行处的$CC
修改为gcc
,将43行ngx_size=$NGX_AUTOTEST
改为ngx_size=4
3.5在命令行中输入以下命令开始配置 tips:还未开始编译
./configure --prefix=/home/lubancat/Capplication/Nginx/nginx-1.20.0/install \
--with-cc=/opt/gcc-aarch64-linux-gnu-8.3.0/bin/aarch64-linux-gnu-gcc \
--with-cc-opt="-Wno-error -Wno-deprecated-declarations" \
--with-cpp=/opt/gcc-aarch64-linux-gnu-8.3.0/bin/aarch64-linux-gnu-g++ \
--with-http_ssl_module \
--with-http_mp4_module \
--with-http_v2_module \
--without-http_upstream_zone_module \
--with-openssl=/home/lubancat/Capplication/Nginx/openssl-3.2.1 \
--with-openssl-opt="--cross-compile-prefix=/opt/gcc-aarch64-linux-gnu-8.3.0/bin/aarch64-linux-gnu- linux-aarch64 -Wno-error -Wno-deprecated-declarations" \
--with-pcre=/home/lubancat/Capplication/Nginx/pcre-8.45 \
--with-zlib=/home/lubancat/Capplication/Nginx/zlib-1.3 \
--add-module=/home/lubancat/Capplication/Nginx/nginx-rtmp-module
配置参数解释
使用脚本./configure
来配置Nginx的编译选项
--prefix
指定存放编译后的安装文件
--with-cc
指定C编译器路径
--with-cc-opt
设置C编译器参数,后跟参数防止编译过程中报使用强烈反对的函数错误
--with-cpp
:设置C编译器参数
--with-http_ssl_module
添加ngx_http_ssl_module模块
--without-http_upstream_zone_module
编译时移除http_upstream_zone_module模块
--with-openssl
设置OpenSSL源码库文件目录
--with-openssl-opt
设置额外编译OpenSSL的参数
--with-pcre
设置PCRE源码库文件目录
--with-zlib
设置zlib源码库文件目录
--add-module
添加第三方RTMP模块
Note
:具体路径需要按照自己的文件存放路径改动哦,上面命令中具体路径需要自己修改!!!
3.6 objs/Makefile 的1628行后手动添加--host=aarch64-linux-gnu
vi objs/Makefile
3.7 修改 nginx 源码目录下的 objs/ngx_auto_config.h 文件,将如下内容添加到该头文件中
#ifndef NGX_HAVE_SYSVSHM
#define NGX_HAVE_SYSVSHM 1
#endif
4.编译安装Nginx
4.1输入命令开始编译
make -j4 & make install
4.2编译成功结束后,在目录install/sbin/
查看结果:
file install/sbin/nginx
5.复制到开发板验证测试 nginx?
5.1将conf/、html/、logs/三个目录移动到/etc/nginx下,查看/etc/nginx/移动成功
5.2将/sbin/nginx移动到/usr/sbin ,输入nginx查看nginx是否能识别到
5.3输入命令启动nginx
./nginx -p /etc/nginx
此时 nginx 服务便在后台运行了,通过ps -aux
命令可查看到:
6.若过程出现其他问题参考解决方法
其余错误欢迎评论区补充指正附带解决办法,谢谢
1.出现aclocal-1.16 is missing on your system
解决方法:安装autoconf-2.65和automake-1.16,可以参考其他博主解决办法:链接仙人指路