1. 程式人生 > >windows下編譯nginx+nginx_rtmp_modue(vs2013)

windows下編譯nginx+nginx_rtmp_modue(vs2013)

path href select 簡單 選項 win32 fastcgi rtc cef

閱讀官方編譯windows版本的方法 http://nginx.org/en/docs/howto_build_on_win32.html

我的環境 Windows 7 Ultimate 64,Visual Studio 2013

nginx_rtmp_modue 在nginx 1.7是無法編譯(linux就不行),所以獲取1.6的版本進行編譯:

hg clone http://hg.nginx.org/nginx nginx-1.6 -u release-1.6.1 (必須在命令行下運行)

其他幾個下載資源

pre http://ncu.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.zip

zlib http://cznic.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz

openssl http://www.openssl.org/source/openssl-1.0.1e.tar.gz

nginx_rtmp_modue https://github.com/arut/nginx-rtmp-module

問題與解決

1,添加nginx_rtmp_module編譯選項

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 \
--with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre-8.35 \
--with-zlib=objs/lib/zlib-1.2.8 --with-openssl=objs/lib/openssl-1.0.1e \
--with-select_module --with-http_ssl_module --with-ipv6 \
--add-module=../nginx-module/nginx-rtmp-module

2, auto/configure 命令需要在MSYS命令行下執行;

3, nmake -f objs/Makefile需要在vs 命令行執行,在c:\Program Files (x86)\Common7\Tools\Shortcuts 可以看到:

技術分享圖片

如果你需要編譯64位的則選擇x64的命令行工具;

3,當執行nmake -f objs/Makefile 時報錯

技術分享圖片

從輸出日誌看,是編譯openssl造成的,從錯誤信息看到: error C2220 “警告被視為錯誤”,這裏只看到了warning C4996一個警告,所以問題必然出在這了,

那就給openssl加上編譯選項忽略掉這個警告:--with-openssl-opt=-wd4996;

將configure命令改成:

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 \
--with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre-8.35 \
--with-zlib=objs/lib/zlib-1.2.8 --with-openssl=objs/lib/openssl-1.0.1e \
--with-select_module --with-http_ssl_module --with-ipv6 \
--with-openssl-opt=-wd4996 \
--add-module=../nginx-module/nginx-rtmp-module

修改後運行;

(以下方法更簡單高效)

也可以直接修改nginx目錄下的的objs/Makefile文件,找到這一行:

$(MAKE) -f auto/lib/openssl/makefile.msvcOPENSSL="../lib/openssl-0.9.8r"

然後修改為:

$(MAKE) -f auto/lib/openssl/makefile.msvcOPENSSL="../lib/openssl-0.9.8r" OPENSSL_OPT="-wd4996"

修改完後執行nmake -f objs/Makefile, done!

windows下編譯nginx+nginx_rtmp_modue(vs2013)