nginx交叉编译移植到linux_aarch64

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,可以参考其他博主解决办法:链接仙人指路

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值