交叉编译nginx1.20.0

一、说明

        简略写一下过程,仅用于参考,建议与其他交叉编译教程一起看,检查是否有遗漏的问题。

二、源码修改

1、auto/cc/name
vi auto/cc/name

        注释 21 行 exit 1。

2、auto/types/sizeof
vi auto/types/sizeof

将 15 行处的” ngx_size=”修改为” ngx_size=4”
将 36 行处的”$CC”修改为”gcc”
将 44 行注释,添加45行” ngx_size=4”

三、下载源码

        注意,需要下载openssl、pcre以及zlib源码,我使用的版本:

能够成功编译,下载方式可百度。

以及nginx-rtmp-module:

git clone https://github.com/arut/nginx-rtmp-module.git

四、配置configure

configure配置命令:(注意不能直接复制使用)

./configure --prefix=/home/ds-admin/tools/nginx/arm32
--with-cc=arm-linux-gnueabihf-gcc 
--with-cpp=arm-linux-gnueabihf-cpp  
--with-http_mp4_module 
--with-http_v2_module 
--without-http_upstream_zone_module 
--add-module=/home/ds-admin/tools/nginx/nginx-rtmp-module
--with-http_ssl_module 
--with-openssl=/home/ds-admin/tools/openssl/openssl-1.1.1f 
--with-pcre=/home/ds-admin/tools/pcre/pcre-8.45 
--with-zlib=/home/ds-admin/tools/zlib/zlib-1.3.1

我没有用换行符拼接,需要逐一复制,参数意义大概都能看懂。

需要修改交叉编译器以及安装路径。

五、Makefile修改

        需要继续修改Makefile文件,打开obj/Makefile。

1、pcre-8.45/Makefile:

在--disable-shared后面添加--host选项,根据自己交叉编译器修改。

2、openssl:

网上有很多教程,我融合了多个方法做了一个拼接,不一定适用所有版本!

首先进入openssl源码下,配置config,没有使用configure,

./config no-asm shared no-async --prefix=$(pwd)/.openssl --cross-compile-prefix=arm-linux-gnueabihf-

这里将安装目录设置为.openssl是因为nginx默认的安装目录,不去修改减少麻烦。

打开Makefile:

将PLATFORM改为arm。

往下找到FLAGS,删除两个 -m64:

退出,先不执行make。

返回nginx源码目录,打开obj/Makefile,找到

删除config配置,改为:

3、增加 -pthread 链接

搜索libpcre.a,找到编译选项,在-ldl -lcrypt后添加 -pthread:

六、编译

        返回nginx源码目录,执行make -j8,要么 make -j4。

肯定报错,但是需要执行才能修改下一步:

修改objs/nginx_auto_config.h:

vi objs/nginx_auto_config.h
#ifndef NGX_HAVE_SYSVSHM
#define NGX_HAVE_SYSVSHM 1
#endif

将上述宏定义添加到头文件,保存后重新make。

此时源码/obj下已经成功编译了nginx:

该可执行文件还未strip:

执行strip,用来去除目标文件中的一些符号表、调试符号表信息,以减小程序的大小:

arm-linux-gnueabihf-strip nginx

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Nginx是一个开源的高性能Web服务器和反向代理服务器,常用于构建动态网站、负载均衡以及缓存等应用场景。交叉编译是指在一台主机上编译生成能够在另一种平台上运行的可执行文件。下面是关于Nginx交叉编译的一些详细信息。 交叉编译Nginx有以下几个步骤: 1. 准备交叉编译工具链:由于编译目标平台与主机平台不一致,需要准备交叉编译工具链。工具链是由交叉编译器、库文件以及其他工具组成的集合,用于在主机上编译生成目标平台的可执行文件。根据目标平台的不同,可以使用不同的交叉编译工具链。 2. 配置Nginx的编译选项:在进行交叉编译之前,需要根据目标平台的需求来配置Nginx的编译选项。这些选项包括目标平台的体系结构、操作系统、编译器等信息。 3. 执行交叉编译命令:在完成工具链的准备和Nginx的配置后,可以执行交叉编译命令来生成目标平台上运行的Nginx可执行文件。交叉编译命令一般会使用到之前准备的交叉编译工具链。 4. 测试和部署:在成功编译生成Nginx可执行文件后,可以在目标平台上进行测试和部署。测试可以验证编译生成的Nginx是否能够在目标平台上正常运行,部署则是将编译生成的Nginx安装到目标平台的指定位置,以便进行实际的应用。 总之,通过交叉编译可以在一台主机上为不同的目标平台生成可执行文件,这为Nginx在不同平台上的部署和使用提供了便利。交叉编译Nginx需要准备交叉编译工具链、配置编译选项,然后执行交叉编译命令来生成目标平台上可运行的Nginx文件。最后,可以在目标平台上进行测试和部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

plmm烟酒僧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值