1、下载所需要的库,包括openssl、zlib、prce

下载并解压缩prce

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar -zxvf pcre-8.35.tar.gz 

下载并解压缩zlib

http://www.zlib.net/fossils/可以自行查看各个版本的并下载,下载后放到服务器解压

tar -zvxf zlib-1.2.11.tar.gz

下载并解压缩openssl

https://openssl-library.org/source/

tar -zxvf openssl-1.1.0l.tar.gz 

nginx下载

https://nginx.org/en/download.html自行下载

tar -zvxf nginx-1.12.2.tar.gz 

2、配置

在nginx文件路径下发送如下指令:

./configure --with-cc=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-gcc --with-cpp=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-g++ --prefix=/home/ebaina/work/rv1126/mynginx --with-pcre=../pcre-8.35 --with-openssl=../openssl-1.1.0l --with-zlib=../zlib-1.2.11  --add-module=../nginx-upload-module
具体解释:
--with-cc=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-gcc //交叉编译工具所在位置
--with-cpp=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-g++ //交叉编译工具所在位置
--prefix=/home/ebaina/work/rv1126/mynginx //对应的是生成文件存放的目录位置
--with-pcre=../pcre-8.35 //对应的是pcre库的绝对路径与版本号
--with-openssl=../openssl-1.1.0l //对应的是openssl库的绝对路径与版本号
--with-zlib=../zlib-1.2.11 //对应的是zlib库的绝对路径与版本号
--add-module=../nginx-upload-module//对应的是nginx-upload-module库的绝对路径

执行命令出现下图信息,表示configure配置完成
在这里插入图片描述

rv1126之前已经部署过nginx服务器,这次重新编译是因为想添加上传文件模块,之前有很多默认路径了,所以重新编译了一下,添加了点内容

./configure --with-cc=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-gcc --with-cpp=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-g++ --prefix=/usr --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-ld-opt="-L/home/ebaina/work/code2/env_1126/lib64" --with-cc-opt="-I/home/ebaina/work/code2/env_1126/include" --with-pcre=/home/ebaina/work/rv1126/pcre-8.35 --add-module=../nginx-upload-module --without-http_upstream_zone_module

3、开始编译

make

参考:
添加链接描述

去掉 -Werror

加 -pthread

在makefile文件加 -lpthread

遇到的报错点
1、
在这里插入图片描述
解决方法

vi objs/ngx_auto_config.h
#ifndef NGX_SYS_NERR
#define NGX_SYS_NERR  132
#endif

2、
在这里插入图片描述

vim objs/Makefile

删掉-Werror

在这里插入图片描述
3、
在这里插入图片描述

vi objs/ngx_auto_config.h

#ifndef NGX_HAVE_SYSVSHM
#define NGX_HAVE_SYSVSHM 1
#endif

终于成功了
在这里插入图片描述

4、已有编译好的库环境情况下,怎么配置

====================================================================================
已有rv1126环境,所以可以不用上面的源码进行配置了,但是编译过程中遇到的错误解决仍可以参考上面内容。

./configure 
--with-cc=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-gcc 
--with-cpp=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-g++ 
--prefix=/home/ebaina/work/rv1126/mynginx 
--with-ld-opt="-L/home/ebaina/work/code2/env_1126/lib64" 
--with-cc-opt="-I/home/ebaina/work/code2/env_1126/include" 
--add-module=../nginx-upload-module 
--without-http_upstream_zone_module

按上面配置后,会报错,提示说没有找不到pcre库。
在这里插入图片描述

所以我们需要交叉编译一下pcre源码,参考:交叉编译pcre库

接着把配置信息改成

./configure 
--with-cc=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-gcc 
--with-cpp=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-g++ 
--prefix=/home/ebaina/work/rv1126/mynginx 
--with-ld-opt="-L/home/ebaina/work/code2/env_1126/lib64" 
--with-cc-opt="-I/home/ebaina/work/code2/env_1126/include" 
--with-pcre=/home/ebaina/work/rv1126/pcre-8.35 //pcre源码目录
--add-module=../nginx-upload-module 
--without-http_upstream_zone_module

在这里插入图片描述
可以看到,配置成功了,然后,make,报错内容可以参考上面内容进行解决。
make install后,生成文件即将存放到–prefix对应目录位置。
在这里插入图片描述
在这里插入图片描述

5、移植到开发板

将mynginx文件拷贝到开发板。
然后将文件分别拷贝到/etc/nginx/和/usr/sbin/

cp -r mynginx/* /etc/nginx/
cp mynginx/sbin/nginx /usr/sbin/
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐