NGINX에 대해 두 가지 질문이 있습니다.
Visual Studio로 NGINX를 이미 컴파일 한 사람이 있습니까? NGINX를 컴파일하기위한 VS9 프로젝트를 만들고 싶습니다.
내 진정한 필요입니다. NGINX를 Lib 또는 DLL로 컴파일하는 방법이 있습니까?
방금 nginx 용 Visual Studio 2010 프로젝트 빌드를 마쳤습니다. 이 과정은 완전히 간단하지 않았기 때문에 제가 배운 모든 것을 자세히 설명하려고합니다. 이것은 귀하의 경험에 따라 몇 시간에서 며칠까지의 과정입니다.
1 단계 : 당신이 해야한다 먼저 따라 창에 nginx를 구축하기위한 가이드 . 이것은 nginx를 빌드 할뿐만 아니라 Visual Studio 프로젝트를 만들 때 사용할 .c 및 .h 파일도 만듭니다. 이 파일 없이는 작동하지 않습니다. (자세한 내용은 여기를 참조 하십시오 .)
저와 같은 유닉스에 익숙하지 않다면 위의 가이드에 답이없는 질문이 남습니다. 따라서 먼저 내 자신의 팁으로 해당 가이드를 구체화 한 다음 나중에 Visual Studio 용 프로젝트를 만드는 방법에 대해 자세히 설명하겠습니다.
먼저 위에 주어진 모든 단계를 따르십시오. MSYS, Strawberry Perl, Mercurial을 설치하고 PCRE, zlib 및 OpenSSL 라이브러리를 다운로드하십시오. 그런 다음 다음 단계를 따르십시오.
1) 관리자 권한으로 명령 프롬프트를 엽니 다. 그런 다음 Visual Studio vc \ vcvarsall.bat 파일을 실행하여 VC를 컴파일러로 사용하도록 환경 변수를 설정합니다. 경로는 다르지만 내가 사용한 명령은 다음과 같습니다.
"C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
나는 Strawberry Perl이 3 개의 경로를 추가 했음에도 불구하고 (PATH 변수를 조사하여 확인할 수 있음) 여전히 잘못된 Perl을 사용하고 있음을 발견했습니다.
2) msys.bat를 실행하여 MSys를 시작합니다. 나에게 MSys는 MinGW 디렉토리에 설치되었으므로 내 경로는 C : \ MinGW \ msys \ 1.0 \ msys.bat입니다.
성공하면 다음과 같은 내용이 녹색으로 표시되어야합니다. JensenV @ AVWMA047LB ~ (사용자 이름 @ 네트워크 주소 제외) MINGW32 : ~
'홈 폴더가 어디에 있는지 궁금 할 것입니다. msys \ 1.0 \ home 아래에 있습니다. 따라서 내 시스템에서는 C : \ MinGW \ msys \ 1.0 \ home \ JensenV에 있습니다.
"ls"또는 "dir"을 수행하면 이것은 처음에있는 디렉토리입니다.
3) 위에서 설명한대로 Mercurial을 설치했다고 가정하면 이제 ngynx 소스를 확인할 수 있습니다. hg clone http://hg.nginx.org/nginx
위에서 언급 한 디렉토리로 이동합니다.
4) 사용중인 perl의 버전이 msys와 함께 제공되는 버전이 아닌 strawberry perl인지 확인해야합니다. 유형 : 어떤 펄
"/bin/perl.exe"와 같은 것을 얻는다면 그것은 잘못된 펄이며 경로를 수정해야합니다. 당신은 이것을 엉망으로 만들 수 있습니다 (내가했던 것처럼 실패했습니다) 또는 msys와 함께 제공되는 perl 버전을 비활성화 할 수 있습니다. msys 설치에서 perl.exe의 이름을 perl_UNUSED.exe로 변경했습니다.
C : \ MinGW \ msys \ 1.0 \ bin
무엇을하든 계속하기 전에 "which perl"이 Strawberry Perl의 경로를 표시하는지 확인하십시오.
5) 또한 내 msys \ 1.0 \ bin 디렉토리에서 "link.exe"로 이름을 변경했습니다 : C : \ MinGW \ msys \ 1.0 \ bin 사용하지 않도록합니다. (예 : "link_UNUSED.exe"로 이름 변경)
위의 1 단계에서 "vcvarsall.bat"가 모든 것을 Microsoft C의 컴파일러 / 링커를 사용하도록 설정했지만 2 단계에서는 링커가 대신 Msys를 사용하도록 변경 되었기 때문이라고 생각합니다. Microsoft를 사용해야합니다.
"link_UNUSED.exe"로 이름이 변경되었는지 확인하려면 어떤 링크를 입력하고 msys와 함께 제공된 link.exe가 아닌 Visual Studio 10 링크를 가리키는 지 확인하십시오.
6) 먼저 "cd nginx"다음 nginx 폴더 내에 objs / lib 폴더 트리를 만듭니다. 가이드에 언급 된대로 여기에서 pcre, zlib 및 openssl을 압축 해제 / 압축 해제합니다 .
7) 현재 디렉토리가 여전히 nginx 인 동안 nginx의 autoconfigure 스크립트를 실행하되 먼저 아래 명령을 수정하여 sopenssl, pcre 및 zlib의 경로를 objs / lib에 설치 한 항목에 맞게 변경하십시오 (버전 번호는 다를 수 있음). ). 내가 사용한 명령은 다음과 같습니다.
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.33 \
--with-zlib=objs/lib/zlib-1.2.8 \
--with-openssl=objs/lib/openssl-1.0.1f \
--with-select_module --with-http_ssl_module --with-ipv6
구성 옵션 을 변경하려면 지금이 시간입니다. 이러한 옵션은 나중에 Visual Studio 프로젝트를 만드는 데 사용할 생성 된 .c 및 .h 파일에 영향을 미치며, 나중에 다른 옵션이 필요하다는 것을 알게 될 때 다시 실행할 필요가 없습니다.
7) 그것을 만드십시오.
nmake -f objs / Makefile
성공하면 새로 컴파일 된 nginx.exe가 home \ YourUsername \ nginx \ objs 폴더에 있어야합니다. 예 : C : \ MinGW \ msys \ 1.0 \ home \ JensenV \ nginx \ objs
또한 이러한 파일은 이제 nginx.exe와 동일한 폴더에 있습니다. ngx_auto_config.h ngx_auto_headers.h ngx_modules.c ngx_pch.c
Visual Studio 프로젝트를 만들 때이를 사용합니다.
8) 맥주를 마셔 라.
**
**
명령 줄 응용 프로그램에 대한 빈 Visual Studio 프로젝트를 만듭니다. nginx 폴더 (루트 수준)에 프로젝트를 저장합니다. 이 단계 전에 msys 외부의 nginx 폴더를 유지하려는 위치로 이동할 수 있습니다.
1) 속성-> VC ++ 디렉터리로 이동하여 다음 포함 디렉터리를 추가합니다.
$ (MSBuildProjectDirectory) \ src \ core $ (MSBuildProjectDirectory) \ src \ event $ (MSBuildProjectDirectory) \ src \ event \ modules $ (MSBuildProjectDirectory) \ src \ http $ (MSBuildProjectDirectory) \ src \ http \ modules $ (MSBuildProjectDirectory) \ src \ http \ modules \ perl $ (MSBuildProjectDirectory) \ src \ mail $ (MSBuildProjectDirectory) \ src \ misc $ (MSBuildProjectDirectory) \ src \ mysql $ (MSBuildProjectDirectory) \ src \ os $ (MSBuildProjectDirectory) \ objs $ (MSBuildProjectDirectory) \ src \ os \ win32 $ (MSBuildProjectDirectory) \ objs \ lib \ openssl \ ssl \ include $ (MSBuildProjectDirectory) \ objs \ lib \ zlib $ (MSBuildProjectDirectory) \ objs \ lib \ pcre
참고 :이 단계 전에 objs / lib로 이동하여 zlib, pcre 및 ssl 폴더에서 버전 번호를 제거했습니다. 이 작업을 수행하거나 설치된 버전과 일치하도록 위의 경로를 수정해야합니다. 프로젝트를 중단하지 않고 향후 이러한 라이브러리의 최신 버전으로 업데이트 할 수 있도록 버전 번호를 제거했습니다.
"Macros >>"버튼을 클릭하고 MSBuildProjectDirectory 경로가 nginx 폴더의 경로인지 확인합니다.
2) 마찬가지로 라이브러리 디렉토리에 다음 경로를 추가하십시오.
$ (MSBuildProjectDirectory) \ objs \ lib \ openssl \ ssl \ lib \ $ (MSBuildProjectDirectory) \ objs \ lib \ pcre \ $ (MSBuildProjectDirectory) \ objs \ lib \ zlib \
다시 말하지만 objs / lib 폴더의 내용에 여전히 버전 번호가있는 경우 버전 번호를 포함하도록 이러한 경로를 수정합니다.
3) 이러한 프로젝트 속성을 다음과 같이 변경합니다.
C / C ++ 일반 : "경고를 오류로 처리"를 아니오 (WX-)로 설정합니다. 전 처리기 : 다음 전 처리기 정의를 추가합니다. WIN32 NGX_WIN32 NGX_MAIL_SSL NO_SYS_TYPES_H FD_SETSIZE = 1024
링커 : 입력 : 추가 종속성에 다음을 추가합니다. ws2_32.lib pcre.lib ssleay32.lib libeay32.lib crypt32.lib zlib.lib
4) Visual Studio 솔루션을 닫습니다. Notepad ++와 같은 좋은 텍스트 편집기로 프로젝트 파일 (.vcxproj로 끝남)을 엽니 다. (문제가 발생할 경우를 대비하여 먼저 백업 사본을 만드십시오.) 또한 텍스트 편집기로 nginx \ objs \ makefile을여십시오.
makefile에서 너무 멀지 않은 곳에서 다음과 같이 시작하는 섹션을 볼 수 있습니다.
objs / nginx.exe : objs / src / core / nginx.obj \ objs / src / core / ngx_log.obj \ objs / src / core / ngx_palloc.obj \ objs / src / core / ngx_array.obj \ .... objs / ngx_modules.obj \ objs / nginx.res \ objs / lib / pcre-8.33 / pcre.lib \ objs / lib / zlib-1.2.8 / zlib.lib $ (링크) @ <<
마찬가지로 Visual Studio 파일에서 소스 코드를 추가 한 경우 (이 단계 이전에 원하는 파일을 추가하여 내가 말하는 내용을 볼 수 있도록) 다음과 같은 내용을 볼 수 있습니다.
makefile의 .obj 파일 만 포함하는 새 문서를 만듭니다. 텍스트 편집기에서 검색 및 바꾸기를 사용하여 Visual Studio 프로젝트 파일의 형식과 일치하도록 수정합니다 (따라서 .obj \ 대신 .c />로 끝나고
또한 슬래시를 백 슬래시로 변경하는 것을 잊지 마십시오. zlib.lib 또는 pcre.lib 행을 포함하지 마십시오. nginx.res를 포함해야하는지 잊어 버렸습니다. (아마 그렇지 않을 것입니다.)
형식이 올바른지 확인한 후 Visual Studio 프로젝트를 저장하고 열어보십시오. makefile의 모든 파일이 프로젝트에 표시되면 올바르게 수행 한 것입니다.
5) exe를 만들 때 nginx가 만든 특수 .c 및 .h 파일을 기억하십니까? 지금도 프로젝트에 추가하고 싶습니다. 다음 사람들을 추가하십시오.
ngx_modules.c ngx_pch.c
6) 이제 컴파일 할 준비가되었습니다!
솔직히 그 과정에서 뭔가를 잊었을 것입니다. 따라서 여전히 수정해야 할 링커 나 컴파일 오류가있을 수 있습니다.하지만 이것은 좋은 시작을 제공 할 것입니다!
참고 : nginx에 포함 된 옵션 을 변경하려면 위의 Part I에서 새로운 자동 / 구성, 새로운 nmake를 수행 한 다음 Visual Studio 프로젝트에 추가 소스 코드를 포함하고 새로 Visual Studio 프로젝트에서 생성 된 ngx_modules.c 및 ngx_pch.c 파일.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다