使用MSYS在Windows 7中构建nginx

Sup*_*100 4 build nginx msys visual-c++

我有Windows 7 Pro x86和Visual Studio 2010 Pro.另外我在c:\ MinGW中有MinGW.我想使用Visual C++在windows下构建nginx.我按照指南.

  1. 我在管理员下运行cmd,然后我调用"c:\ Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
  2. 在cmd中我运行C:\ MinGW\msys\1.0\msys.bat
  3. 在我下载先决条件之前,我cd到nginx source direcotry并运行configure脚本.
  4. 然后我运行nmake -f objs/Makefile

结果是以下错误:

Microsoft (R) Program Maintenance Utility Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.

'install' is up-to-date
    cl -O2  -W4 -WX -nologo -MT -Zi -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H 
       -Ycng x_config.h -Fpobjs/ngx_config.pch -c -I src/core-I src/event
       -I src/event/mod ules  -I src/os/win32  -I objs/lib/pcre-8.32  
       -I objs/lib/openssl/openssl/include -I objs/lib/zlib-1.2.7  -I objs
       -I src/http  -I src/http/modules -I src/mail -Foobjs/ngx_pch.obj 
       objs/ngx_pch.c ngx_pch.c

    cl -c -O2  -W4 -WX -nologo -MT -Zi -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H 
       -Y ungx_config.h -Fpobjs/ngx_config.pch -I src/core-I src/event  
       -I src/event/mod ules  -I src/os/win32  -I objs/lib/pcre-8.32  
       -I objs/lib/openssl/openssl/include  -I objs/lib/zlib-1.2.7  -I objs
       -I src/http  -I src/http/modules -I src/mail -Foobjs/src/core/nginx.obj
       src/core/nginx.c nginx.c

c:\nginx\source\src\event\ngx_event_openssl.h(15) : fatal error C1083:
Cannot open include file: 'openssl/ssl.h': No such file or directory
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio
10.0\VC\BI N\cl.EXE"' : return code '0x2' Stop.
Run Code Online (Sandbox Code Playgroud)

但是OpenSSL位于C:\nginx\source\_ objs\lib\openssl中

我做错了什么?

小智 7

我有同样的问题.

问题与使用Perl构建处理某些文件的eol(行尾)有关.您不应该使用MSYS Perl构建.相反,您应该使用ActivePerl或StrawberryPerl,如指南中所示.尽管PATH指向MSYS Perl之前的适当Perl发行版.

export PATH=/appropriate/perl/dist:$PATH
Run Code Online (Sandbox Code Playgroud)

这个答案帮助我解决了这个问题.

  • 对我来说,解决方案是将msys\bin中的perl.exe重命名为perl_UNUSED.exe,以便使用Strawberry Perl.(尽管添加了草莓Perl的路径,并且在msys路径之前......由于某种原因它仍然在接收msys perl.)使用"which perl"来验证正在使用的正确版本. (2认同)