[VC++] OpenSSL DLL라이브러리 빌드
출처 : http://blog.simplism.kr/?p=694
[VC++] OpenSSL DLL라이브러리 빌드
빌드환경
운영체제 : Microsoft Windows 7 Ultimate (x86)
빌드도구
Microsoft Visual Studio 2005 Professional Edition (http://dreamspark.com/)
ActiveState ActivePerl 5.10.1.1007 for Windows (x86) (http://www.activestate.com/activeperl/)
라이브러리 버전 : OpenSSL-1.0.0 (2010.03.29 release)
빌드된 라이브러리 : libopenssl_dll
이제 졸업을 위해서 졸업작품을 진행하면서 윈도우즈 환경과 리눅스 환경을 모두 고려한 일종의 파일매니저 및 동기화 소프트웨어를 개발하기로 결정하면서 기능보완을 위해 파일암호화하는 부분을 추가했는데, 그것을 위한 준비과정으로 아파치에서 사용하는 너무나 유명한 라이브러인 openssl을 사용하기로 했습니다.
솔직히 빌드된 DLL 바이너리를 다운받아도 되지만… 혹시라도 openssl소스를 뜯어고칠 일을 대비해서 빌드를 직접하기로 했는데, 소스파일 내부에 있던 INSTALL.W32파일에 나와있는 대로 진행이 되질 않아서 여러 번 실패하다가 결국 성공했습니다.
위에 빌드된 DLL파일과 include를 위한 파일을 압축해서 올렸습니다. 혹시 필요하신 분은 가져다가 사용하셔도 됩니다.
1. 빌드환경 구축
DLL빌드에 사용되는 빌드환경은 Visual Studio 2005와 ActivePerl입니다. 소스 내부에 있는 INSTALL.W32문서를 보시면 어셈블러도 필요하다고 나와있지만 어셈블러 모듈로 사용할 것이 아니라면 사용하지 않아도 됩니다. 저는 어플리케이션의 GUI부분은 Qt4로 암호화 부분은 멀티플랫폼을 지원하는 라이브러리인 openssl을 이용할 것이므로 해당사항이 없어서 설치하지 않았습니다.
Visual Studio 2005의 경우에는 대학생이라면 학교에서 제공하는 웹메일을 이용하여 드림스파크에 등록해서 무료로 다운받아서 사용할 수 있습니다.
라이브러리 빌드 시에 빌드환경 설정을 위한 Confiugre에 사용하기 위하여 ActivePerl(http://www.activestate.com/activeperl/)을 설치합니다. 해당 홈페이지에 접속해서 Windows용 설치파일을 다운받아서 설치하시면 됩니다.
두 빌드 툴은 설치과정은 다음다음만 계속 눌러주면 되기에 따로 설명하지 않겠습니다.
2. 빌드 전에 해야할 일
솔직히 INSTALL.W32 문서에 해당 문제에 대한 해결법이 나와있지 않아서 조금 해맸습니다. 그냥 INSTALL.W32문서에 나와있는데로 실행을 하면 nmake 시에 아래와 같은 에러가 발생합니다.
.\crypto\x509v3\v3_pcia.c : error C2220: warnig treated as error – no ‘object’ file generated
.\crypto\x509v3\v3_pcia.c : warnig C4819: The file contains a character that cannot be represented in the current code page. Save the file in Unicode format to prevent data loss
NMAKE : fatal error U1077: ‘”C:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.EXE”‘ : return code ’0×2′
stop
그래서 해결방법을 구글링을 해서 찾아봤습니다.
소스를 압축해제한 뒤에 openssl-1.0.0\crypto\x509v3에 있는 v3_pcia.c, v3_pci.c 두 파일을 비주얼 스튜디오로 열어서 두 파일의 상단의 주석을 지워줍니다. (솔직히 왜 지우는지는 모르겠습니다…)
그런 뒤에 유니코드로 저장하기 위해서 File – Advanced Save Options을 선택합니다.
파일은 현재 CP949로 셋팅되어있는데, 이 때문에 빌드에러가 발생합니다. 그것을 해결해주기 위한 방법입니다.
위 처럼 CP949에서 Unicode (UTF-8 with signature) – Codepage 65001로 선택하고 OK를 눌러줍니다. 그런 후에 저장을 하고 꺼주면 됩니다. 다른 파일도 마찬가지로 상단의 주석을 삭제하고 인코딩을 바꿔주고 저장합니다.
3. 라이브러리 빌드
이제 실제로 빌드를 시작합니다.
시작 – 모든 프로그램 – Microsoft Visual Studio 2005 – Visual Studio Tools – Visual Studio 2005 Command Prompt를 선택합니다.
다운받은 후에 openssl-1.0.0을 저장한 디렉토리로 cd명령어를 이용해서 이동합니다.
> cd openssl-1.0.0
> perl Configure VC-WIN32
> ms\do_ms
> nmake -f ms\ntdll.mak
저와 같은 환경 하에서 위의 두 파일을 유니코드로 저장해줬다면 정상적으로 빌드를 완료할 것입니다.
4. 라이브러리 테스트
라이브러리가 정상적으로 빌드가 되었는지 확인하기 위해서 아래의 명령어를 실행합니다.
> ms\test
5. 참고문서
OpenSSL 암호화 프로그래밍 첫 걸음 (월간 마이크로소프트웨어, 2003.12월본 296-303)
openssl-1.0.0 소스디렉토리의 INSTALL.W32문서
http://www.devpia.co.kr/Maeul/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8352&page=1
http://jurinac.tistory.com/73
[VC++] OpenSSL DLL라이브러리 빌드
빌드환경
운영체제 : Microsoft Windows 7 Ultimate (x86)
빌드도구
Microsoft Visual Studio 2005 Professional Edition (http://dreamspark.com/)
ActiveState ActivePerl 5.10.1.1007 for Windows (x86) (http://www.activestate.com/activeperl/)
라이브러리 버전 : OpenSSL-1.0.0 (2010.03.29 release)
빌드된 라이브러리 : libopenssl_dll
이제 졸업을 위해서 졸업작품을 진행하면서 윈도우즈 환경과 리눅스 환경을 모두 고려한 일종의 파일매니저 및 동기화 소프트웨어를 개발하기로 결정하면서 기능보완을 위해 파일암호화하는 부분을 추가했는데, 그것을 위한 준비과정으로 아파치에서 사용하는 너무나 유명한 라이브러인 openssl을 사용하기로 했습니다.
솔직히 빌드된 DLL 바이너리를 다운받아도 되지만… 혹시라도 openssl소스를 뜯어고칠 일을 대비해서 빌드를 직접하기로 했는데, 소스파일 내부에 있던 INSTALL.W32파일에 나와있는 대로 진행이 되질 않아서 여러 번 실패하다가 결국 성공했습니다.
위에 빌드된 DLL파일과 include를 위한 파일을 압축해서 올렸습니다. 혹시 필요하신 분은 가져다가 사용하셔도 됩니다.
1. 빌드환경 구축
DLL빌드에 사용되는 빌드환경은 Visual Studio 2005와 ActivePerl입니다. 소스 내부에 있는 INSTALL.W32문서를 보시면 어셈블러도 필요하다고 나와있지만 어셈블러 모듈로 사용할 것이 아니라면 사용하지 않아도 됩니다. 저는 어플리케이션의 GUI부분은 Qt4로 암호화 부분은 멀티플랫폼을 지원하는 라이브러리인 openssl을 이용할 것이므로 해당사항이 없어서 설치하지 않았습니다.
Visual Studio 2005의 경우에는 대학생이라면 학교에서 제공하는 웹메일을 이용하여 드림스파크에 등록해서 무료로 다운받아서 사용할 수 있습니다.
라이브러리 빌드 시에 빌드환경 설정을 위한 Confiugre에 사용하기 위하여 ActivePerl(http://www.activestate.com/activeperl/)을 설치합니다. 해당 홈페이지에 접속해서 Windows용 설치파일을 다운받아서 설치하시면 됩니다.
두 빌드 툴은 설치과정은 다음다음만 계속 눌러주면 되기에 따로 설명하지 않겠습니다.
2. 빌드 전에 해야할 일
솔직히 INSTALL.W32 문서에 해당 문제에 대한 해결법이 나와있지 않아서 조금 해맸습니다. 그냥 INSTALL.W32문서에 나와있는데로 실행을 하면 nmake 시에 아래와 같은 에러가 발생합니다.
.\crypto\x509v3\v3_pcia.c : error C2220: warnig treated as error – no ‘object’ file generated
.\crypto\x509v3\v3_pcia.c : warnig C4819: The file contains a character that cannot be represented in the current code page
NMAKE : fatal error U1077: ‘”C:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.EXE”‘ : return code ’0×2′
stop
그래서 해결방법을 구글링을 해서 찾아봤습니다.
소스를 압축해제한 뒤에 openssl-1.0.0\crypto\x509v3에 있는 v3_pcia.c, v3_pci.c 두 파일을 비주얼 스튜디오로 열어서 두 파일의 상단의 주석을 지워줍니다. (솔직히 왜 지우는지는 모르겠습니다…)
그런 뒤에 유니코드로 저장하기 위해서 File – Advanced Save Options을 선택합니다.
파일은 현재 CP949로 셋팅되어있는데, 이 때문에 빌드에러가 발생합니다. 그것을 해결해주기 위한 방법입니다.
위 처럼 CP949에서 Unicode (UTF-8 with signature) – Codepage 65001로 선택하고 OK를 눌러줍니다. 그런 후에 저장을 하고 꺼주면 됩니다. 다른 파일도 마찬가지로 상단의 주석을 삭제하고 인코딩을 바꿔주고 저장합니다.
3. 라이브러리 빌드
이제 실제로 빌드를 시작합니다.
시작 – 모든 프로그램 – Microsoft Visual Studio 2005 – Visual Studio Tools – Visual Studio 2005 Command Prompt를 선택합니다.
다운받은 후에 openssl-1.0.0을 저장한 디렉토리로 cd명령어를 이용해서 이동합니다.
> cd openssl-1.0.0
> perl Configure VC-WIN32
> ms\do_ms
> nmake -f ms\ntdll.mak
저와 같은 환경 하에서 위의 두 파일을 유니코드로 저장해줬다면 정상적으로 빌드를 완료할 것입니다.
4. 라이브러리 테스트
라이브러리가 정상적으로 빌드가 되었는지 확인하기 위해서 아래의 명령어를 실행합니다.
> ms\test
5. 참고문서
OpenSSL 암호화 프로그래밍 첫 걸음 (월간 마이크로소프트웨어, 2003.12월본 296-303)
openssl-1.0.0 소스디렉토리의 INSTALL.W32문서
http://www.devpia.co.kr/Maeul/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8352&page=1
http://jurinac.tistory.com/73
댓글
댓글 쓰기