ACE 빌드 -Step By Step


작성자 : 최흥배 ( jacking75@gmail.com )

                                     


임영기님이 작성한 ACE 빌드 방법을 토대로 스크린 샷과 함께 좀 더 쉽게 설명하려고 합니다.

또 마지막에 64비트 빌드 방법도 추가했습니다.



1. ACE 다운로드

http://download.dre.vanderbilt.edu/  에서 다운로드 합니다.



이 중 ACE만 필요로 하면 가장 아래의 ACE.zip을 다운로드 합니다.



2. 압축 풀기

다운로드 받은 파일의 압축을 풉니다. 압축을 풀면 ACE_wrappers 라는 폴더가 만들어집니다.

ACE_wrappers 폴더를 $ACE_ROOT 라고 부릅니다.


저는 C:\projects\CommonLib 폴더에 ACE.zip을 다운 받은 후 압축을 풀어서 ACE_wrappers 폴더의 총 path는 C:\projects\CommonLib\ACE_wrappers 가 되었습니다.



3. config.h 파일 생성

ACE를 다운 받고 압축을 푼 후 빌드 하기 전에 confih.h 파일을 만들어야 합니다.

$ACE_ROOT/ace 폴더에 만듭니다.



config.h에 필요로 하는 것을 설정합니다. 보통은 아래의 3줄만을 사용해도 됩니다.

  1. #define ACE_HAS_STANDARD_Cpp_LIBRARY 1  // STL 사용
  2. #define ACE_HAS_UNICODE 1                                 // 유니코드 사용
  3. #include "ace/config-win32.h"



4. Visual Studio에서 빌드

Static 라이브러리를 빌드하는 방법만 예를 들겠습니다.

Visual Studio 2005를 사용하는 사람은 $ACE_ROOT/ace/ 폴더에 있는 ace_vc8_Static.sln,

Visual Studio 2008를 사용하는 사람은 $ACE_ROOT/ace/ 폴더에 있는 ace_vc9_Static.sln를 클릭합니다.



저는 VS2008을 사용하므로 ace_vc9_Static.sln을 클릭했습니다.


속성 페이지를 열어서 구성 속성’ – ‘일반에서 문자 집합 유니 코드 문자 집합 사용으로 선택합니다.



빌드를 하면 $ACE_ROOT/lib 폴더에 ACEs.lib(릴리즈) / ACEsd.lib(디버그) 두 개의 라이브러리 파일이 생성됩니다



5. Visual Studio의 옵션에서 프로젝트 및 솔루션 설정

메뉴의 도구’ – ‘옵션을 클릭합니다.

프로젝트 및 솔루션’ – ‘VC++ 디렉토리에서

포함 파일 디렉토리에 $ACE_ROOT 폴더를 등록합니다.


이어서 ‘라이브러리 디렉토리에 $ACE_ROOT\lib 을 등록합니다.



이것으로 ACE 빌드는 끝입니다.^^

32비트로만 빌드 하실 분들은 이 아래의 글을 보지 않아도 됩니다.



6. 64비트 버전으로 빌드

64비트 빌드를 하기 위해서는 Visual Stuido에 64비트 컴파일러가 설치되어야 합니다. 보통 기본으로는 설치하지 않으니 Visual Studio를 설치할 때 설치항목 선택에서 64비트 부분이 선택 되었는지 확인하세요.


64비트 빌드를 위해서 64비트 용 솔루션 구성을 추가합니다.

메뉴의 빌드에서 구성 관리자를 선택합니다.



왼쪽 상단의 활성 솔루션 구성에서 새로 만들기를 선택합니다.



64비트 릴리즈 버전 구성을 추가하는 경우 아래 그림처럼 합니다( 새로 추가하는 이유는 기존의 32비트 빌드 구성은 그대로 유지해 놓기 위해서입니다.



오른쪽 상단의 활성 솔루션 플랫폼에서 새로 만들기를 선택합니다.



새 플랫폼 입력 또는 선택 에서 x64 선택합니다.



기존에 생성되는 32비트 라이브러리 파일과 겹치지 않도록 솔루션 속성에서 라이브러리 이름을 변경합니다. 저는 기존 이름의 뒤에 64를 붙입니다.


이 후 이 프로젝트 구성으로 빌드하면 64비트 용 라이브러리가 생성됩니다.

by 흥배 2009. 5. 31. 15:38
  • 날자고도 2009.06.02 02:01 ADDR EDIT/DEL REPLY

    스샷을 많이 뜨셨군요..
    많은 노력이 엿보입니다.. ㄷㄷ

  • 초보 빌드 2009.10.11 12:54 ADDR EDIT/DEL REPLY

    안녕하세요.

    혹시 빌드하실 때 다음 에러들이 안 나오던가요?

    ..\ace/checked_iterator.h(42) : error C2653: 'stdext' : 클래스 또는 네임스페이스 이름이 아닙니다.
    ..\ace/checked_iterator.h(42) : error C2143: 구문 오류 : ';'이(가) '<' 앞에 없습니다.
    ..\ace/checked_iterator.h(42) : error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.
    ..\ace/checked_iterator.h(42) : error C2988: 템플릿 선언/정의를 인식할 수 없습니다.
    ..\ace/checked_iterator.h(42) : error C2059: 구문 오류 : '<'
    ..\ace/Array_Map.cpp(21) : error C2065: 'Key' : 선언되지 않은 식별자입니다.
    ..\ace/Array_Map.cpp(21) : error C2065: 'Value' : 선언되지 않은 식별자입니다.
    ..\ace/Array_Map.cpp(21) : error C2065: 'EqualTo' : 선언되지 않은 식별자입니다.
    ..\ace/Array_Map.cpp(23) : error C2065: 'l' : 선언되지 않은 식별자입니다.
    ..\ace/Array_Map.cpp(23) : error C2065: 'f' : 선언되지 않은 식별자입니다.
    ..\ace/Array_Map.cpp(24) : error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.
    ..\ace/Array_Map.cpp(25) : error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.
    ..\ace/Array_Map.cpp(25) : error C2061: 구문 오류 : 식별자 'value_type'
    ..\ace/Array_Map.cpp(26) : error C2448: 'nodes_' : 함수 스타일 이니셜라이저가 함수 정의처럼 나타납니다.

    저는 빌드할 때 위의 에러들이 나와 다음 링크를 통해 일단 해결은 했는데 국내 ACE 빌드에 관한 글들을
    보면 위의 에러에 대해 전혀 언급이 없어서 어찌 된 것인지 당혹스럽네요.

    Re: [ace-users] Checked_iterator.h problem with STLport.
    http://www.archivum.info/comp.soft-sys.ace/2008-07/00054/Re:_%5Bace-users%5D_Checked_iterator.h_problem_with_STLport.




    ACE 64비트 빌드와 관련해서 STLport를 64비트로 빌드하실 때 설정을 어떻게 하셨나요?
    저는 STLport 32비트 라이브러리 파일과 겹치지 않기 않도록 Visual Studio 2008 x64 Win64 명령 프롬프
    트에서 다음 설정처럼 --lib-motif x64 옵션을 추가해 기본 파일 이름 뒤에 x64를 붙여서 빌드를 했습니다.

    configure msvc9 -p winxp --use-boost "boost path" --extra-cxxflag /wd4819 --extra-cxxflag /Zc:wchar_t --lib-motif x64

    그리고 Visual Studio의 도구->옵션->프로젝트 및 솔루션->VC++ 디렉터리->플랫폼 x64, 다음 파일의 디
    렉터리 표시 라이브러리 파일에 STLport 64비트 라이브러리 파일의 경로를 등록한 후 ACE 샘플 소스를
    x64로 빌드를 하며 다음 에러 메세지가 나옵니다.

    LINK : fatal error LNK1104: 'stlportstld_static.lib' 파일을 열 수 없습니다.

    지금 제 환경에서 stlportstld_static.lib는 32비트 STLport 라이브러리 파일인데 이걸 왜 열려고 하는지 모
    르겠네요. 일단 64비트 STLport 라이브러리 파일들의 이름에서 x64를 지워 해결은 했는데 안 지우고 쓸
    수 있는 방법은 없을까요?

    고맙습니다.

    • 흥배 2009.10.11 14:07 신고 EDIT/DEL

      저는 STL Port를 사용하지 않기 때문에 잘 모르겠습니다. MS에서 제공하는 STL만 사용합니다. 그래서 초보 빌드님의 문제를 알기 힘드네요.

  • 초보 빌더 2009.10.12 22:33 ADDR EDIT/DEL REPLY

    아~ 그러셨군요. 제가 번지수를 잘못 찾았네요. 죄송합니다. 그리고 빠른 답변 고맙습니다.

| 1 |