Visual Studio로 NGINX 컴파일

Dectroo

NGINX에 대해 두 가지 질문이 있습니다.

  1. Visual Studio로 NGINX를 이미 컴파일 한 사람이 있습니까? NGINX를 컴파일하기위한 VS9 프로젝트를 만들고 싶습니다.

  2. 내 진정한 필요입니다. NGINX를 Lib 또는 DLL로 컴파일하는 방법이 있습니까?

Vern Jensen

방금 nginx 용 Visual Studio 2010 프로젝트 빌드를 마쳤습니다. 이 과정은 완전히 간단하지 않았기 때문에 제가 배운 모든 것을 자세히 설명하려고합니다. 이것은 귀하의 경험에 따라 몇 시간에서 며칠까지의 과정입니다.

1 단계 : 당신이 해야한다 먼저 따라 창에 nginx를 구축하기위한 가이드 . 이것은 nginx를 빌드 할뿐만 아니라 Visual Studio 프로젝트를 만들 때 사용할 .c 및 .h 파일도 만듭니다. 이 파일 없이는 작동하지 않습니다. (자세한 내용은 여기를 참조 하십시오 .)

저와 같은 유닉스에 익숙하지 않다면 위의 가이드에 답이없는 질문이 남습니다. 따라서 먼저 내 자신의 팁으로 해당 가이드를 구체화 한 다음 나중에 Visual Studio 용 프로젝트를 만드는 방법에 대해 자세히 설명하겠습니다.

파트 I : MSYS를 사용하여 Windows 용 nginx 컴파일

먼저 위에 주어진 모든 단계를 따르십시오. 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) 맥주를 마셔 라.

**

2 부 : Visual Studio nginx 프로젝트 만들기

**

명령 줄 응용 프로그램에 대한 빈 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Visual Studio로 Cling 컴파일

분류에서Dev

Visual Studio로 JSON 컴파일 문제

분류에서Dev

Visual Studio 2013에서 Mono로 컴파일

분류에서Dev

특이한 Visual Studio 컴파일 오류

분류에서Dev

Visual Studio 2013으로 C ++ 11 코드 컴파일

분류에서Dev

Visual Studio 2013으로 C ++ 11 코드 컴파일

분류에서Dev

Visual Studio에서 외부 자체 프로젝트 컴파일

분류에서Dev

Visual Studio 2013 컴파일 오류-파일 누락

분류에서Dev

Visual Studio 2013 IDE를 사용하여 CUDA Mex 파일 컴파일

분류에서Dev

Visual Studio 2013 IDE를 사용하여 CUDA Mex 파일 컴파일

분류에서Dev

Visual Studio 프로젝트를 사전 커밋 git 후크로 컴파일

분류에서Dev

Visual Studio가 @angular 경로로 angular2 및 typescript를 컴파일하는 방법

분류에서Dev

CMake : Visual Studio 프로젝트에 조건부 컴파일러 플래그 추가

분류에서Dev

디버깅 할 때 Visual Studio Code g ++가 C ++ 17로 컴파일되지 않음

분류에서Dev

설치하지 않고 실행하도록 Visual Studio 프로그램 컴파일

분류에서Dev

Visual Studio에서 PCAP 프로그램을 컴파일 할 수 없습니다.

분류에서Dev

다른 VC 컴파일러에서 빌드 된 Visual Studio 크로스 링크 DLL

분류에서Dev

새로운 Visual Studio 프로젝트에 Eigen 3.3.1 파일을 포함하면 컴파일되지 않습니다.

분류에서Dev

Visual Studio 2019에서 C ++ 소스 파일을 조건부로 컴파일하려면 어떻게하나요?

분류에서Dev

Visual Studio devolopers 명령 프롬프트를 사용하여 여러 소스 파일 프로그램 C ++ 컴파일

분류에서Dev

Visual Studio C # 프로젝트에서 hlsl 셰이더 파일을 컴파일하는 방법

분류에서Dev

승객 지원으로 nginx 컴파일 오류

분류에서Dev

Linux 용 Windows의 Visual Studio에서 C 코드 컴파일

분류에서Dev

타사 API의 컴파일 오류-Visual Studio

분류에서Dev

Qt Visual Studio 2015 추가 기능 컴파일 문제

분류에서Dev

Visual Studio 2019 : "공유 컴파일"을 끌 수있는 위치

분류에서Dev

Visual Studio C ++ 참조 삭제 된 함수 컴파일 오류

분류에서Dev

Visual Studio 2010 컴파일러의 버그입니까?

분류에서Dev

Visual Studio의 Razor보기에서 버그 컴파일

Related 관련 기사

  1. 1

    Visual Studio로 Cling 컴파일

  2. 2

    Visual Studio로 JSON 컴파일 문제

  3. 3

    Visual Studio 2013에서 Mono로 컴파일

  4. 4

    특이한 Visual Studio 컴파일 오류

  5. 5

    Visual Studio 2013으로 C ++ 11 코드 컴파일

  6. 6

    Visual Studio 2013으로 C ++ 11 코드 컴파일

  7. 7

    Visual Studio에서 외부 자체 프로젝트 컴파일

  8. 8

    Visual Studio 2013 컴파일 오류-파일 누락

  9. 9

    Visual Studio 2013 IDE를 사용하여 CUDA Mex 파일 컴파일

  10. 10

    Visual Studio 2013 IDE를 사용하여 CUDA Mex 파일 컴파일

  11. 11

    Visual Studio 프로젝트를 사전 커밋 git 후크로 컴파일

  12. 12

    Visual Studio가 @angular 경로로 angular2 및 typescript를 컴파일하는 방법

  13. 13

    CMake : Visual Studio 프로젝트에 조건부 컴파일러 플래그 추가

  14. 14

    디버깅 할 때 Visual Studio Code g ++가 C ++ 17로 컴파일되지 않음

  15. 15

    설치하지 않고 실행하도록 Visual Studio 프로그램 컴파일

  16. 16

    Visual Studio에서 PCAP 프로그램을 컴파일 할 수 없습니다.

  17. 17

    다른 VC 컴파일러에서 빌드 된 Visual Studio 크로스 링크 DLL

  18. 18

    새로운 Visual Studio 프로젝트에 Eigen 3.3.1 파일을 포함하면 컴파일되지 않습니다.

  19. 19

    Visual Studio 2019에서 C ++ 소스 파일을 조건부로 컴파일하려면 어떻게하나요?

  20. 20

    Visual Studio devolopers 명령 프롬프트를 사용하여 여러 소스 파일 프로그램 C ++ 컴파일

  21. 21

    Visual Studio C # 프로젝트에서 hlsl 셰이더 파일을 컴파일하는 방법

  22. 22

    승객 지원으로 nginx 컴파일 오류

  23. 23

    Linux 용 Windows의 Visual Studio에서 C 코드 컴파일

  24. 24

    타사 API의 컴파일 오류-Visual Studio

  25. 25

    Qt Visual Studio 2015 추가 기능 컴파일 문제

  26. 26

    Visual Studio 2019 : "공유 컴파일"을 끌 수있는 위치

  27. 27

    Visual Studio C ++ 참조 삭제 된 함수 컴파일 오류

  28. 28

    Visual Studio 2010 컴파일러의 버그입니까?

  29. 29

    Visual Studio의 Razor보기에서 버그 컴파일

뜨겁다태그

보관