Windows에서 openssl 빌드 방법2
저장소/VC++원문 출처 : http://blog.iseohyun.co.kr/120128190854
파일 생성 경로 등 설정
1) x86 static library
perl Configure VC-WIN32 --openssldir=D:\OpenSSL32_x86 no-shared no-asm threads no-idea no-mdc2 no-rc5
2) x86 static debug library
perl Configure debug-VC-WIN32 --openssldir=D:\OpenSSL32_x86_debug no-shared no-asm threads no-idea no-mdc2 no-rc5
3) x64 static library
perl Configure VC-WIN64A --openssldir=D:\OpenSSL32_x64 no-shared no-asm threads no-idea no-mdc2 no-rc5
4) x64 static debug library
perl Configure debug-VC-WIN64A --openssldir=D:\OpenSSL32_x64_debug no-shared no-asm threads no-idea no-mdc2 no-rc5
라이센스 문제로 인한 IDEA, MDC2, RC5를 제외시키는 방법은 위와 같고 그냥 출력 경로를 바꾸려면 아래와 같이 해라.
perl Configure VC-WIN32 --openssldir=D:\OpenSSL_x86
perl Configure VC-WIN64A --openssldir=D:\OpenSSL_x64
OpenSSL은 잘알려진 각종 암호화, 서명과 같은 툴을 이용하는 도구이다. 인증서에 사용되는 RSA서명은 물론, 암호화에 자주 사용되는 AES나 DES를 사용할 수 있으며, 기타 다른 알고리즘을 구현하기에도 용이하다. 오픈 소스를 사용하기 앞서, 이번 포스트에서는 배포되는 오픈소스의 라이브러리를 생성하는 과정을 소개한다.
(참고로, 라이브러리를 수정할 것이 아니라면 라이브러리 작성 과정을 생략하고 라이브러리만 설치(또는 카피copy)하면 된다.
다시말해 아래 과정을 다 수행 할 필요없이 첨부파일을 다운받아 설치만해도 된다는 뜻이다. 과정 8만 진행)
I. 재료구하기
소개에 앞서 라이브러리를 만드는 재료를 구하기 바란다.
※ 링크의 자료는 각 사이트의 업로드나 리뉴얼에 따라서 바뀔 수 있다. 댓글로 남겨놓으면 수정하도록 한다.
OpenSSL프로그램 다운로드
http://www.openssl.org/source/openssl-0.9.8k.tar.gz
ActivePerl 다운로드
(출처 :
2008 무료 다운로드(학생용)
http://www.microsoft.com/express/download/#webInstall
인스톨 공식 문서는 OpenSSL을 다운로드 한 뒤 해당 폴더에서 찾을 수 있다.
C:\openssl-0.9.8k\INSTALL를 워드 파일로 열거나(영문)
C:\openssl-0.9.8k\INSTALL.W32를 워드 파일로 연다.(영문)
II. 라이브러리 작성
재료가 다 구해졌다면 라이브러리를 만들어보자.
1. ActivePerl 설치
2. OpenSSL 압축해제C:\openssl-0.9.8k 에 압축해제.
3. 컴파일환경 설정(Optional)
☞ C:\openssl-0.9.8k\Configure 파일에 VC-WIN32라는 파일을 로드한다. 컴파일 결과 파일이 C:\OpenSSL로 설치 되도록 한다.
☞ 명령어 : perl Configure VC-WIN32 --openssldir=C:\OpenSSL
4. 어셈블리 사용여부.
☞ 어셈블리어를 사용하지 않는 경우 ms\do_ms.batNASM
☞ 어셈블리어를 사용하는 경우 ms\do_nasm.batMASM
☞ 어셈블리어를 사용하는 경우 ms\do_masm.bat
5. 소스 수정
☞ 소스파일 최상단에 위치한 주석문에 특수문자가 포함되어 있어서 컴파일 오류가 발생하기 때문에, 소스파일 가장 위에 주석문을 제거하고 저장함.
(/* v3_pci.c -*- mode:C; c-file-style: "eay" -*- */)
penssl-0.9.8k\crypto\x509v3\v3_pci.c
openssl-0.9.8k\crypto\x509v3\v3_pcia.c
☞삭제 하지 않으면 다음과 같은 오류 발생 :
NMAKE : fatal error U1077: '"path\cl.exe"' : return code '0x2
6. 환경변수에 nmake.exe의 위치를 추가 시킴.
목적 : nmake 실행
내컴퓨터 우클릭 -> 속성 -> 시스템 등록정보 -> 환경변수 -> XXX에 관한 사용자 변수(U)에서 PATH선택 -> 편집 -> 마지막에 “;” 추가후 입력
예) C:\Program Files\ESTsoft\ALZip; C:\Program Files\OpenVPN\bin; C:\openssl-0.9.8k;
C:\Program Files\Microsoft Visual Studio 9.0\VC\bin
7. 컴파일
☞ Command창에서 다음을 순서대로 입력.
입력하기 전에 다음과 같은 명령을 수행한다.
C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
(C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat 와 내용 동일)
☞인스톨 시행전에 vcvarsall.bat을 실행하지 않았을 때 다음과 같은 문제 발생
NMAKE : fatal error U1077: '"path\cl.exe"' : return code '0xc0000135'
ans) path경로 설정문제
x64의 경우
C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\amd64\vsvars64.bat 를 실행해야 한다.
안 그러면 아래와 같은 에러 발생
NMAKE : fatal error U1077: '"...\link.exe"' : return code '0x458'
[참고] http://www.mentby.com/younie-bradford/need-help-trying-to-build-openssl-in-windows-x64.html
7.1. nmake -f ms\ntdll.mak (2~3분 소요)
컴파일을 하고 실행이 정상적으로 완료되면 C:\openssl-0.9.8k\out32dll에 파일이 생성된다.
7.2. nmake -f ms\ntdll.mak test (1~2분 소요)
컴파일 된 데이터를 테스트 한다.
7.3 nmake -t ms\ntdll.mak install (1~2분 소요)
include, lib, bin을 생성한다.
8. 다음 파일을 사용하는 방법에는 2가지 방법이 있다.
8.1. 라이브러리에 직접 추가하는 방법
☞ 각각의 파일을 경로에 붙인다.
예) C:\OpenSSL\bin libeay32.dll, openssl.exe, ssleay32.dll
->C:\Program Files\Microsoft Visual Studio 9.0\VC\bin
->C:\Program Files\Microsoft Visual Studio\VC98\Bin
C:\OpenSSL\include openssl폴더
->C:\Program Files\Microsoft Visual Studio 9.0\VC\include
->C:\Program Files\Microsoft Visual Studio\VC98\include
C:\OpenSSL\lib libeay32.lib, ssleay32.lib
->C:\Program Files\Microsoft Visual Studio 9.0\VC\lib
->C:\Program Files\Microsoft Visual Studio\VC98\lib
8.2. 라이브러리 경로를 추가 하는 방법
☞ Microsoft Visual Studio 6.0
Tools -> Option -> Directories -> Include files -> C:\OpenSSL\include 추가
Executable files -> C:\OpenSSL\bin 추가Library files -> C:\OpenSSL\lib 추가
project -> settings -> Link ->Object/library modules:ssleay32.lib libeay32.lib 추가
(미실행시 에러)
1>test.obj : error LNK2019: unresolved external symbol _RAND_bytes referenced in function _main
☞ Microsoft Visual Studio 2008
Tools -> Options -> VC++ Directories -> Show directories for: ->Include files -> C:\OpenSSL\include 추가
Executable files -> C:\OpenSSL\bin 추가
Library files -> C:\OpenSSL\lib 추가
(프로젝트이름) Property Pages -> Configuration Properties -> Linker -> Command Line -> Additional options : -> ssleay32.lib libeay32.lib추가
'저장소 > VC++' 카테고리의 다른 글
동기화 - Spin Lock (0) | 2012.11.09 |
---|---|
WMI(Windows Management Instrumentation) C++ Sample (0) | 2012.11.09 |
Windows에서 openssl 빌드 방법1 (0) | 2012.11.05 |
[펌] Windwos에서 openssl 빌드 (0) | 2012.11.05 |
ifstream 한글 문제 (0) | 2012.10.30 |