nginx1.21在windows下vs交叉编译rtmp模块

最近需要自己编译windows版本的nginx,为研究源码做个准备。找了一大堆资料,看的脑袋疼,交叉编译真是比较麻烦,比linux麻烦多了,整了几个小时才完成。。

感谢前辈们的参考资料,但是应该大家碰到的问题不完全一致,可能和机器以及下载的版本有关。有些坑踩完了后边估计可能忘了,极力回想了一下补了一篇文章。欢迎补充。

1.下载并安装msys2,用于生成makefile文件

2.电脑需要有vs环境,使用它的nmake编译,我用的vs2017

3.下载nginx-rtmp相关的依赖,三个包准备好Openssl、Pcre、Zlib

4.下载并安装perl5,安装后需要重启机器,在cmd下perl才能正常运行,否则perl不生效。控制台输入perl -v可以显示perl的版本。

5.下载并安装tortoisehg,和svn是一个公司出的,版本管理软件,用来下载nginx源码使用。很多教程所说的mercurial,和这个是一个东西。

6.下载并安装nasm,注意是exe文件,如果环境变量中没有,需要手动添加进去,nasm编译nginx的一个环境依赖。

7下载并安装sed,注意也是exe文件。将C:\Program Files (x86)\GnuWin32\bin配置到环境变量path中。

8.运行cmd,切入tortoisehg的主目录,执行命令:(获取nginx源码)

hg clone http://hg.nginx.org/nginx

9.获取完毕后,在TortoiseHg下生成了nginx目录

 

10.Nginx下创建目录供后续使用nginx/objs/lib,将第三步下载的几个依赖库放进这个目录下

11.打开msys2,生成makefile文件

auto/configure --with-cc=cl --builddir=objs --prefix= --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access.log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --http-scgi-temp-path=temp/scgi_temp --http-uwsgi-temp-path=temp/uwsgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre-8.00 --with-zlib=objs/lib/zlib-1.2.11 --with-openssl=objs/lib/openssl-1.1.1k --with-select_module --with-http_ssl_module --add-module=objs/lib/nginx-rtmp-module

 

生成的文件

11特别注意,如果直接用nmake来编译,会报错,所以需要修改几个文件,绕过这几个报错

修改这个文件,将其中的-W4修改为-W3

修改这个文件,将其中的ms\do_ms 改为ms\do_nasm

Perl也会有个错误“you may need to install the Win32::Console module”,

Can't locate Win32/Console.pm in @INC (you may need to install the Win32::Console module) (@INC contains: C:\Perl64\site\lib C:\Perl64\lib) at C:\Perl64\lib/ActivePerl/Config.pm line 400.

修改C:\Perl64\lib\ActivePerl\Config.pm,400行,将下边那些全部注掉

12.启动vs的编译工具

13.开始执行编译nmake  -f objs/Makefile

14.编译完成

此时exe已经生成了,只是sed的环境配置的有问题,不影响生成,不用理会。

后来发现确实是忘了配置sed的环境变量。

exe编译成功

15.使用rtmp,这个不赘述了。来找带rtmp模块的自然也会配置了。把exe文件替换一下原来的就可以了。

16.另外,rtmp模块的代码之前编译linux版的时候就有了。这里就没有下载,可以和nginx源码一样的下载方式来获取。

MinGW我尝试过,感觉是个坑,编译出来的东西运行时还提示依赖mingw,很明显不是我们想要的。总不能服务器上还装一套mingw,所以就换了思路来做。

 

参考资料:

https://www.cnblogs.com/KendoCross/p/7585654.html

https://blog.csdn.net/zhangzq86/article/details/105100942

https://blog.csdn.net/longji/article/details/52369618 (这篇参考价值最大)

使用的各个环境的版本:

 

资源链接

https://download.csdn.net/download/luiio/19145869?spm=1001.2014.3001.5501

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

luiio

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

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

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

打赏作者

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

抵扣说明:

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

余额充值