ubuntu18.04下交叉编译 nginx源码(支持推送H265的rtmp和http-flv)

news2024/11/27 14:50:37

ubuntu18.04下交叉编译 nginx源码(支持推送H265的rtmp和http-flv)

  • 适合在aarch64-linux-gnu平台下的交叉编译
    • 一、源码下载准备
    • 二、执行configure
    • 三、解决执行configure时遇到的出错问题
      • 1、checking for C compiler ... found but is not working
      • 2、error: can not detect int size
    • 四、configure执行成功
    • 五、执行make前准备工作
      • 1、修改configure后生成的Makefile
    • 六、make过程中出错解决
      • 1、遇到openssl编译出错
      • 2、遇到'NGX SYS NERR'未声明的出错
    • 七、make执行成功
    • 八、下载

适合在aarch64-linux-gnu平台下的交叉编译

一、源码下载准备

下载以下源码,官方下载路径就不提供了,可以直接用我提供的
分别解压以下源码,放在同个目录下/opt/nginx_rar/
nginx-1.18.0-code.tar.gz
nginx-http-flv-module-master-h265.zip
openssl-1.1.1f.tar.gz
pcre-8.44.zip
zlib-1.2.11.tar.gz

二、执行configure

先进入nginx-1.18.0-code/nginx-f8052414dbe9/auto把configure文件拷贝到nginx-f8052414dbe9目录下,再回到nginx-f8052414dbe9目录执行以下命令。

./configure --with-cc=/usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc --with-cpp=/usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ --prefix=/usr/local/nginx --without-http_gzip_module --with-http_ssl_module --without-http_upstream_zone_module --with-http_auth_request_module --add-module=/opt/nginx_rar/nginx-http-flv-module-master --with-pcre=/opt/nginx_rar/pcre-8.44 --with-zlib=/opt/nginx_rar/zlib-1.2.11 --with-openssl=/opt/nginx_rar/openssl-1.1.1f

注意:/usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc为你交叉编译器所在的位置。

三、解决执行configure时遇到的出错问题

1、checking for C compiler … found but is not working

在这里插入图片描述
解决方法:
找到auto/cc/name文件并打开
找到如下代码

if [ $ngx_found = no ]; then
        echo
        echo $0: error: C compiler $CC is not found
        echo
        exit 1
fi

把exit 1 注释掉

2、error: can not detect int size

解决方法:
找到auto/types/sizeof文件并打开
找到如下代码

if [ -x $NGX_AUTOTEST ]; then
    ngx_size=`$NGX_AUTOTEST`
    echo " $ngx_size bytes"
fi

改成

if [ -x $NGX_AUTOTEST ]; then
    ngx_size=8
    echo " $ngx_size bytes"
fi

在这里插入图片描述

四、configure执行成功

解决完上面两处报错后,继续执行configure命令,看到如下画面即执行成功configure。
在这里插入图片描述

五、执行make前准备工作

1、修改configure后生成的Makefile

找到objs/底下的Makefile文件,打开后找到如下两处地方,修改成跟如下一样即可开始执行make
在这里插入图片描述
在这里插入图片描述

六、make过程中出错解决

1、遇到openssl编译出错

在这里插入图片描述
解决方法:
去到openssl-1.1.1f源码目录下找到Makefile并打开,搜索m64,有两处,都删除掉,其中有一行整行删除,注意:然后直接在openssl-1.1.1f源码目录下执行make和make install,都成功后回到nginx源码目录继续执行之前未执行完的make

2、遇到’NGX SYS NERR’未声明的出错

在这里插入图片描述
解决方法:
找到objs/目录底下的ngx_auto_config.h文件并打开,到文件末尾增加如下代码后继续执行make
在这里插入图片描述

七、make执行成功

在这里插入图片描述
执行make install
在这里插入图片描述
到此,你已经成功编译出nginx(在/usr/local/目录下)

八、下载

源码和编译成功后的可执行nginx

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

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

相关文章

Vue-第一天 前端工程化与 webpack

前端工程化与 webpack一、前端工程化1. 小白眼中的前端开发 vs 实际的前端开发2. 什么是前端工程化3. 前端工程化的好处4. 前端工程化的解决方案二、webpack 的基本使用1. 什么是 webpack2. 创建列表隔行变色项目3. 在项目中安装 webpack4. 在项目中配置 webpack4.1 mode 的可选…

Homekit智能家居DIY设备-智能通断开关

智能通断器,也叫开关模块,可以非常方便地接入家中原有开关、插座、灯具、电器的线路中,通过手机App或者语音即可控制电路通断,轻松实现原有家居设备的智能化改造。 随着智能家居概念的普及,越来越多的人想将自己的家改…

【微服务】Elasticsearch集群介绍搭建(六)

🚗Es学习第六站~ 🚩Es学习起始站:【微服务】Elasticsearch概述&环境搭建(一) 🚩本文已收录至专栏:微服务探索之旅 👍希望您能有所收获 一.引入 单机的elasticsearch做数据存储,必然面临两个…

暗月内网渗透实战——项目七

首先环境配置 VMware的网络配置图 环境拓扑图 开始渗透 信息收集 使用kali扫描一下靶机的IP地址 靶机IP:192.168.0.114 攻击机IP:192.168.0.109 获取到了ip地址之后,我们扫描一下靶机开放的端口 靶机开放了21,80,999,3389,5985,6588端口…

20、CSS中单位:【px和%】【em和rem】【vw|vh|vmin|vmax】的区别

CSS中的px 和 % px (pixels) 是固定单位,也可以叫基本单位,代表像素,可以确保元素的大小不受屏幕分辨率的影响。 % (percentage) 是相对单位,代表元素大小相对于其父元素或视口(viewport)的大小的百分比。使用百分比可…

linux001之linux系统部署安装

注意:本次安装讲解以乌班图(Ubuntu) 虚拟机来说明讲解,既然学习linux,就无需用图形界面了,直接用服务器版本 1. 下载乌班图 网址:https://www.ubuntu.org.cn/download/server 然后就可以看到右下角有下载提示&#xff…

Scala - Idea 项目报错 Cannot resolve symbol XXX

一.引言 Idea 编译 Scala 项目大面积报错 Cannot resolve symbol xxx。 二.Cannot resolve symbol xxx 1.问题描述 Idea 内的 Scala 工程打开后显示下述异常: 即 Scala 常规语法全部失效,代码出现大面积红色报错。 2.尝试解决方法 A.设置 Main Sourc…

车道线检测-E2E_LSFitting 论文学习笔记

论文:《End-to-end Lane Detection through Differentiable Least-Squares Fitting》 代码:https://github.com/wvangansbeke/LaneDetection_End2End 材料:https://zhuanlan.zhihu.com/p/94419168 特点: 拟合二次曲线&#xff1b…

Kafka安装及zookeeper is not a recognized option问题解决

一安装JAVA JDK(略) 二安装ZooKeeper 下载安装包,建议bin版本 http://zookeeper.apache.org/releases.html#download解压并进入ZooKeeper,将“zoo_sample.cfg”重命名为“zoo.cfg” D:\Kafka\apache-zookeeper-3.7.1-bin\conf…

Python中类和对象(2)

1.继承 Python 的类是支持继承的:它可以使用现有类的所有功能,并在无需重新编写代码的情况下对这些功能进行扩展。 通过继承创建的新类称为 “子类”,被继承的类称为 “父类”、“基类” 或 “超类”。 继承语法是将父类写在子类类名后面的…

相机坐标系的正向投影和反向投影

1 、正向投影: 世界坐标系到像素坐标系 世界3D坐标系(x, y, z) 到图像像素坐标(u,v)的映射过程 (1)世界坐标系到相机坐标系的映射。 两个坐标系的转换比较简单,就是旋转矩阵 平移矩阵,旋转矩阵则是绕X, Y&#xff…

nginx中间件常见漏洞总结

nginx中间件常见漏洞总结1.中间件漏洞的概念1.1 中间件、容器、服务器的基本概念辨析2.Nginx 配置错误导致漏洞2.1 $uri导致的CRLF注入漏洞2.1.1 漏洞成因2.1.2 利用方式2.1.3 修改方案2.2 目录穿越漏洞2.1.1 漏洞成因2.2.2 利用方式2.2.3 修改方案2.3 Http Header被覆盖2.3.1 …

JS学习笔记三

目录 一、this详解 1、this原理 2、使用场景 1、普通函数的调用,this指向的是Window 2、对象的方法,this指的是该对象 一、this详解 1、this原理 this是JavaScript的一个关键字,函数调用时才会出现; 因为函数是在一定的环…

Android核心开发【UI绘制流程解析+原理】

一、UI如何进行具体绘制 UI从数据加载到具体展现的过程: 进程间的启动协作: 二、如何加载到数据 应用从启动到onCreate的过程: Activity生产过程详解: 核心对象 绘制流程源码路径 1、Activity加载ViewRootImpl ActivityThread…

Java并发编程概述

在学习并发编程之前,我们需要稍微回顾以下线程相关知识:线程基本概念程序:静态的代码,存储在硬盘中进程:运行中的程序,被加载在内存中,是操作系统分配内存的基本单位线程:是cpu执行的…

Jenkins部署及持续集成——傻瓜式教程

文章目录jenkins安装jenkins启动jenkins登录jenkins插件Jenkin创建一个项目通过Git进行构建构建策略jenkins安装 jenkins官网 https://www.jenkins.io/ 支持Docker pull下载安装 我用的windows,这里下载war包,这个位置下载的是最新的,需要java11或者更…

论文笔记:Depth-supervised NeRF: Fewer Views and Faster Training for Free

中文标题:深度信息监督的神经辐射场:需要更少的视角并且更快的训练 解决的问题: 在缺少视野的情况下,神经辐射场不能拟合正确的几何结构。 创新点 NeRF的第一步需要对场景图像做SFM(structure from motions),这个过程不光会获…

数据库/SQL教学推荐用什么样SQL工具?必须管理方便,轻松上手的

SQL语言逐渐成为职场人士必备的能力。很多人一直走上职场才了解什么是SQL,而更多人在大学就已经开始学习。 这些人一定对类似《数据库原理与应用》的课程不陌生。还记得你们是怎么熬过这门课的吗? 为什么说“熬”呢?实话说,数据库…

1行Python代码,对话ChatGPT,网友:太方便了

大家好,这里是程序员晚枫。 最近ChatGPT火爆全球,哪怕你不是程序员,应该也听过他的大名了。 今天我们就来一起体验一下~1行Python代码就够了! 上代码 导入poai这个库后,只需要1行代码poai.chatgpt.chat&#xff0c…

ThinkPHP 6 视图:从零开始

框架6.0默认只能支持PHP原生模板,如果需要使用thinkTemplate模板引擎,需要安装think-view扩展(该扩展会自动安装think-template依赖库)。 PHP原生模板 1.配置文件 默认设置为Think,因为没有安装,直接使用会…