본문 바로가기
배움의공간(學)/기타

OpenSSL 라이브러리 빌드 (Visual Studio 2013)

by ㅋㅕㅋㅕㅇㅣ 2019. 6. 12.

Visual Studio 2013 에서 사용하기 위한 라이브러리 빌드임

 

■ 준비 과정


1) openssl 소스코드 다운로드 (GitHub)

    ※ Visual Studio 2013 용으로 빌드하기 위해서는 openssl_1.1.1w 버전을 사용한다. (1.1.x 버전 이용)

    ※ x64/x86 용 소스코드 폴더를 각각 생성한다. (이전 생성된 obj로 인해 makefile 을 새로 생성해도 링크 오류 발생함

 

2) 오픈 소스들 간의 코드 트리를 맞춰준다.  (3rd_party\openssl)

   - 3rd_party

      - openssl

         - openssl-1.1.1w_x64

         - openssl-1.1.1w_x86

 

3) Perl 설치 (Strawberry Perl for Windows) => 환경변수 %PATH% 에 경로 추가

4) NASM 설치 => 환경변수 %PATH% 에 경로 추가

 

■ 빌드 과정 (x64)


1. 비주얼스튜디오가 설치하는 명령 콘솔 (VS2013 x64 Native Tools Command Prompt) 을 관리자 권한으로 실행
    =>  경로: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts
   ※ Visual Studio 2013 프로젝트에서 라이브러리를 사용하려면 반드시 동일 버전 콘솔을 이용해야 함
   ※ x64/x86 용 소스코드 폴더를 각각 생성한다. (이전 생성된 obj로 인해 makefile 을 새로 생성해도 링크 오류 발생함)

 

2. prompt 화면에서 openssl 소스코드 경로로 이동 (예: c:\openssl-1.1.1w_x64)

3. 라이브러리 빌드 (x64)

   3-1. 환경 변수 설정  <= x64 prompt 에서 실행하므로 수행하지 않아도 됨
      c:\openssl -1.1.1w_x64> "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat"

   3-2) makefile 생성
      c:\openssl -1.1.1w_x64> perl Configure VC-WIN64A no-idea no-md2 no-mdc2 no-rc5 no-rc4 no-asm

   3-3) nmake 수행
      c:\openssl -1.1.1w_x64> nmake

     [참고] 설치 경로 (VC-WIN64)
       - PREFIX: %ProgramW6432%\OpenSSL
       - OPENSSLDIR: %CommonProgramW6432%\SSL

   3-4) 라이브러리 파일 생성됨 (libcrypto, libssl 관련: dll, lib)'

 

 

■ 빌드 과정 (x86)

1. 비주얼스튜디오가 설치하는 명령 콘솔 (VS2013 x86 Native Tools Command Prompt) 을 관리자 권한으로 실행
    =>  경로: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts

 

2. prompt 화면에서 openssl 소스코드 경로로 이동 (예: c:\openssl -1.1.1w _x86)


3.  라이브러리 빌드 (x86)

  3-1. 환경 변수 설정   <= x86 prompt 에서 실행하므로 수행하지 않아도 됨

      c:\openssl -1.1.1w_x86> "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
  3-2. makefile 생성

      c:\openssl -1.1.1w_x86> perl Configure VC-WIN32  no-idea no-md2 no-mdc2 no-rc5 no-rc4 no-asm

  3-3. nmake 수행
      c:\openssl -1.1.1w_x86> nmake

     [참고] 설치 경로 (VC-WIN32)
       - PREFIX: %ProgramFiles(x86)%\OpenSSL
       - OPENSSLDIR: %CommonProgramFiles(x86)%\SSL  

   3-4. 라이브러리 파일 생성됨 (libcrypto, libssl 관련: dll, lib)


4. 기타 명령
   4-1. nmake 테스트 
      c:\openssl -1.1.1w> nmake test
   4-2. 빌드한 모듈 설치
      c:\openssl -1.1.1w> nmake install

 

■ 알게된 것

- nmake 를 이용한 빌드 과정에서 오류 발생 시 기존 .obj 파일들을 제거한 후 다시 nmake 수행 시 성공하기도 한다고 함
- visual studio 2013 프로젝트에서 openssl 라이브러리를 참조하기 위해서는 동일 버전의 visual studio prompt 으로 반드시 빌드 해야 함


Reference

https://gist.github.com/Zingam/9e5fb170076490bedda3

 

https://dev.to/masanori_msl/windows-installing-openssl-3bac

https://github.com/openssl/openssl/blob/master/NOTES-WINDOWS.md#native-builds-using-visual-c++

https://tmjb.tistory.com/3

 https://gist.github.com/Zingam/9e5fb170076490bedda3

 

 

 

 

-- 이전 자료 -- 

다운로드 및 설치

OpenSSL 을 perl 을 이용해 컴파일 시 필요한 패키지

  • NSAM
  • dmake
  • PPM
    ※ CPAN 을 이용해 패키지 다운로드 후 c:\perl64\bin 폴더에 .exe 복사
    ※ 환경변수 PATH 에 개별 패키지 경로를 넣어도 perl 에서 찾지 못함

빌드 방법

  • OpenSSL 폴더로 이동 (d:\openssl)
  • 커맨드 창을 실행하여 아래 명령 수행
    • perl ./Configure VC-WIN64A no-idea no-md2 no-mdc2 no-rc5 no-rc4 --prefix=d:\openssl\build
    • 옵션 설명
      • 특허가 걸려있는 알고리즘 제외: no-idea no-md2 no-mdc2 no-rc5 no-rc4
      • 운영체제: VC-WIN32 (32bit), VC-WIN64A (64bit)
      • prefix: 빌드 결과파일 저장 경로
  • Visual Studio 네이티브 도구 명령 프롬프트를 관리자 권한으로 실행
    • nmake
    • nmake install
      ※ 본인의 Visual Studio 버전 및 플랫폼(32/64bit) 에 맞게 선택 (VS2013 x64 도구 모음 이용)

CPAN 이란

  • CPAN(Comprehensive Perl Archive Network)
  • Perl 을 설치한 후 환경변수에 경로를 잡아주면 cpan 을 사용할 수 있다.
  • 커맨드 창에서 cpan 입력하면 cpan> 프롬프트가 뜬다.
  • 패키지명을 meta::cpan 사이트에서 찾은 후 cpan 프롬프트에서 다운로드 받을 수 있다.
    • cpan> install PPM
    • cpan> install dmake
    • cpan> install Alien::nsam

nmake 란

  • Microsoft Program Maintenance Utility
  • Visual studio 네이티브 도구 명령 프롬프트를 띄우면 nmake 를 사용할 수 있다.

Reference

 

'배움의공간(學) > 기타' 카테고리의 다른 글

Stack overflow survey  (0) 2023.01.02
[DP] SOLID 원칙  (0) 2022.12.22
[DP] GoF (Gang of Four)  (0) 2022.12.22
if(kakao) dev2022 을 보며  (0) 2022.12.08
[Microsoft] Learn .NET  (0) 2019.06.18

댓글