Imx6ull交叉编译nginx

news2024/11/16 11:52:40

Imx6ull交叉编译nginx

需要下好的包
Nginx(下载压缩包源码)
nginx-rtmp-module(可以下载压缩包源码也可以 git clone https://github.com/arut/nginx-rtmp-module.git)
pcre(下载源码)
zlib(下载源码)
openssl(下载源码)

下载完之后解压到指定目录就好了(不用交叉编译 不用交叉编译 真可以不用)
我的位置是:

/home/jemee/linux/tool/openssl-1.1.1g
/home/jemee/linux/tool/nginx-rtmp-module	
/home/jemee/linux/tool/pcre-8.39
/home/jemee/linux/tool/zlib-1.2.13

在这里插入图片描述

进入nginx-1.20.0目录。在这个目录下新建一个名为config.sh的脚本文件,文件内容如下:

./configure --prefix=/home/jemee/linux/tool/nginx-1.20.0/install \
--with-http_ssl_module \
--with-http_mp4_module \
--with-http_v2_module \
--without-http_upstream_zone_module \
--with-cc=arm-linux-gnueabihf-gcc  \
--with-cpp=arm-linux-gnueabihf-cpp \
--with-pcre=/home/jemee/linux/tool/pcre-8.39 \
--with-openssl=/home/jemee/linux/tool/openssl-1.1.1g \
--without-http_gzip_module \
--add-module=/home/jemee/linux/tool/nginx-rtmp-module

参数—prefix指定安装目录,–with-cc=arm-linux-gnueabihf-gcc
–with-cpp=arm-linux-gnueabihf-cpp \在指定交叉编译工具
指定库文件目录
在consigure之前还需要配置一些文件

首先打开 nginx 源码目录下的 auto/cc/name 文件,将 21 行处的”exit 1”给注释掉!
在这里插入图片描述

修改完成之后保存退出。接着打开 auto/types/sizeof 文件,将 15 行处的” ngx_size=”修改为” ngx_size=4”,
并且将 36 行处的”$CC”修改为”gcc”,如下所示

在这里插入图片描述

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

为了防止编译pcre的时候报错,需要配置pcre交叉工具链。修改auto/options
在这里插入图片描述

修改objs/Makefile
在这里插入图片描述

使用sh config.sh,执行脚本成功如下:

在这里插入图片描述

这个时候我们需要修改 nginx 源码目录下的 objs/ngx_auto_config.h 文件,将如下内容添加到该头文件中

#ifndef NGX_HAVE_SYSVSHM
#define NGX_HAVE_SYSVSHM 1
#endif

添加完成之后保存退出, make 编译
若出现以下错误(参考知乎:https://zhuanlan.zhihu.com/p/591025497)
在这里插入图片描述

查看报错信息是openssl的编译出错,但是在objs/Makefile下并未找到和 -m64 相关的选项。 此时的-m64参数其实在openssl解压文件夹下。其实到这一步,我们可以发现Nginx的Makefile会生成各个模块的Makefile,最后调用这些Makefile去编译各个模块。既然如此,自己手动配置openssl的编译选项,并单独编译。
编辑 objs/Makefile 文件

在这里插入图片描述
修改为:
在这里插入图片描述

进入openssl解压目录
先建一个 .openssl 目录(用命令行建立 nginx会在这个目录里找需要的库),然后执行以下配置
./config no-asm shared --prefix=/home/jemee/linux/tool/openssl-1.1.1g/.openssl --cross-compile-prefix=arm-linux-gnueabihf-

no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程;
shared: 生成动态连接库。
–cross-compile:交叉工具前缀

修改openssl 的Makefile 在 vim 下/-m64找到所有-m64选项删除-m64,我这里只有两处
然后执行openssl 的make
成功会生成以下内容:
在这里插入图片描述

然后回到nginx解压目录 执行make
若出现以下错误:
在这里插入图片描述

在/obj/Makefile里添加 –lpthread
在这里插入图片描述

执行make 成功如下:

在这里插入图片描述

make install
在这里插入图片描述

在ARM上执行nginx

将nginx拷贝到arm平台根文件系统下。再将安装目录下的conf、logs、html 文件夹拷贝到开发板Linux 系统的/etc/nginx 目录下。 conf文件夹下包含了nginx的配置文件。
执行 nginx ./nginx -p /etc/nginx 报错:getpwnam (“ xxxx ”) failed in /etc/ nginx / nginx .conf
在开发板系统上 vi /etc/nginx/conf/nginx.conf 将第一行内容改成如下图所示:
在这里插入图片描述
在这里插入图片描述

没有用户的话建立用户
在这里插入图片描述

我们先用addgroup命令,添加root组,组号(GID)为0。执行addgroup命令前,必须先建立空白的/etc/group文件:
/ # touch /etc/group
/ # addgroup -g0 -S root
然后再用adduser命令,添加一个root账户,用户号(UID)为0,所属组为root组,家目录为/root,shell为/bin/sh。执行adduser命令前,必须先建立空白的/etc/passwd文件:

/ # touch /etc/passwd
/ # adduser -h/root -Groot -S -u0 -s/bin/sh root

我这里建立的是root1
在这里插入图片描述

运行出错
在这里插入图片描述

给权限运行
在这里插入图片描述

Pc测试

在这里插入图片描述

在交叉编译可能会遇到很多错误(我装了两天半才搞好),可以参考别人的经验:
https://codeleading.com/article/125368509/
https://zhuanlan.zhihu.com/p/591025497
https://blog.csdn.net/qq_42020799/article/details/125874687
真诚的感谢其他博主的帮忙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/399326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国外SEO升级攻略:如何应对搜索引擎算法变化?

搜索引擎优化(SEO)是一个动态的领域,搜索引擎的算法经常会发生变化,这意味着SEO专业人员需要保持更新的技术知识和策略, 以适应变化并提高网站的排名。 以下是一些应对搜索引擎算法变化的升级攻略: 创造…

Linux-0.11 kernel目录进程管理sched.c详解

Linux-0.11 kernel目录进程管理sched.c详解 sched.c主要功能是负责进程的调度,其最核心的函数就是schedule。除schedule以外, sleep_on和wake_up也是相对重要的函数。 schedule void schedule(void)schedule函数的基本功能可以分为两大块,…

数据结构-带头双向循环链表

前言: 链表有很多种,上一章结,我复盘了单链表,这一章节,主要针对双链表的知识点进行,整理复盘,如果将链表分类的话,有很多种,我就学习的方向考察的重点,主要…

一点就分享系列(实践篇6——上篇)【迟到补发】Yolo-High_level系列算法开源项目融入V8 旨在研究和兼容使用【持续更新】

一点就分享系列(实践篇5-补更篇)[迟到补发]—Yolo系列算法开源项目融入V8旨在研究和兼容使用[持续更新] 题外话 去年我一直复读机式强调High-level在工业界已经饱和的情况,目的是呼吁更多人看准自己,不管是数字孪生交叉领域&#…

React全家桶(一)

课程内容 1、React基础 2、React Hooks 3、React路由 4、React Redux 5、组件库 6、Immutable 7、Mobx 8、ReactTS 9、单元测试 10、dvaumi 一、React介绍 1、React起源与发展 2、React与传统MVC的关系 3、React的特性 4、虚拟DOM 二、create-react-app 1、全局安装…

数学小课堂:数学难题的意义(善用工具和跳出圈外)

文章目录 引言I 几何学中的古典难题(几何作图题)1.1 伽罗瓦1.2 伽罗瓦理论II 数学难题的启发2.1 跳出圈外2.2 工具的作用引言 毕达哥拉斯定理做保障:任何自然数的平方根都可以用圆规和直尺作出来 高斯用直尺和圆规作图解决正十七边形画法的问题,正十七边形的边长计算出来…

如何利用海外主机服务提高网站速度?

网站速度是任何在线业务成功的关键。快速的网站速度可以让用户更快地访问您的网站,增加页面浏览量。对于拥有全球用户的网站而言,选择一个海外主机服务商是提高网站速度的有效方法之一。下面是一些利用海外主机服务(如美国主机、香港主机)提高网站速度的…

Job System

01-C#Job System概述官方文档 Unity C# Job System允许用户编写与Unity其余部分良好交互的多线程代码,并使编写正确的代码变得更加容易。编写多线程代码可以提供高性能的好处。其中包括显着提高帧速率和延长移动设备的电池寿命。C&#xff03…

iOS开发-bugly符号表自动上传发布自动化shell

这里介绍的是通过build得到的app文件和dSYM文件来打包分发和符号表上传。 通过Archive方式打包和获得符号表的方式以后再说。 一:bugly工具jar包准备 bugly符号表工具下载地址:(下载完成后放入项目目录下,如不想加入git可通过gitIgnore忽略…

doPost的实际使用

目录 前言 一、doPost是什么? 二、使用步骤 1.doPost的请求方法 2.需要引入依赖 总结 前言 本章主要记录一下doPost的请求公用方法的使用。 一、doPost是什么? 它其实就是一个http的post请求方式。 二、使用步骤 1.doPost的请求方法 当我们系…

使用Endnote自定义参考文献格式

使用Endnote自定义参考文献格式 使用Endnote插入参考文献,若要设置期刊指定格式或自己想要的参考格式,使用EndNote自定义方法,步骤如下。 注:有的期刊会给出EndNote的格式文件,那样直接导入就行。 文章目录使用Endnot…

Python+Yolov8目标识别特征检测

Yolov8目标识别特征检测如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01;前言这篇博客针对<<Yolov8目标识别特征检测>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用推荐…

毕业设计常用模块之温湿度模块DHT11模块使用

DHT11是一款可以测量温度数据和湿度数据的传感器 产品特点 暖通空调、除湿器、农业、冷链仓储、测试及检测设备、消费品、汽车、自动控制、数据记录器、气 象站、家电、湿度调节器、医疗、其他相关湿度检测控制 外形尺寸 第3管脚&#xff1a;NC 是没有用的 典型电路 通信方式…

表格中的table-layout属性讲解

表格中的table-layout属性讲解 定义和用法 tableLayout 属性用来显示表格单元格、行、列的算法规则。 table-layout有三个属性值&#xff1a;auto、fixed、inherit。 fixed&#xff1a;固定表格布局 固定表格布局与自动表格布局相比&#xff0c;允许浏览器更快地对表格进行布…

excel 一对多数据查询公式 经典用法

所谓一对多&#xff0c;就是符合某个指定条件的有多个结果&#xff0c;要把这些结果都提取出来。 下面咱们就说说一对多查询的典型用法&#xff0c;先看数据源&#xff1a; A~D列是一些员工信息&#xff0c;要根据F2单元格指定的学历&#xff0c;提取出所有“本科”的人员姓名…

“一网统管”视频融合平台EasyCVR增加播放限制功能,支持全局及自定义设置视频播放时长

EasyCVR平台可在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。平台可支持多协议、多类型的设备接入&#xff0c;包括国标GB28181、RTMP、RTSP/Onvif、海康SDK、大华SDK…

网络 | 网络层讲解 | IP协议 | 分片处理与网段划分

文章目录前言IP报文格式分片处理分片对传输层的影响网段划分路由转发中的路由表前言 tcp作为传输层的典型协议&#xff0c;保证了报文传输的可靠性&#xff0c;使每份报文完整的传输。在传输层之下的网络层解决的是传输能力的问题&#xff0c;它使得数据可以发送到对方主机&am…

Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流

场景 Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流&#xff1a; Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_win nginx-rtmp最新版_霸道流氓气质的博客-CSDN博客 Vue中使用vue-video-player和videojs-flash插件实现播放rtmp视频文件流&…

类型转换(C++)

文章目录1. 为什么需要类型转换2. C语言的类型转换2.1 隐式类型转换2.2 显式类型转换2.3 特点3. C的类型转换3.1 static_cast3.2 reinterpret_cat3.3 const_cast3.4 dynamic_cast转型向下转型的安全问题3.5 explicit4. RTTI5. 常见题目1. 为什么需要类型转换 类型转换是将一个…

数据库-基础篇-8-事务

事务简介&#xff1a;事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功要么同时失败。 默认MySQL的事务是自动提交的&#xff0c;也就是说&#xff0c…