티스토리 뷰

Software

ACE 컴파일 요령

2008. 11. 3. 22:26
간단하게 잘 써 놓아서 올려봅니다.
The ADAPTIVE Communication Environment (ACE) 에서 긁어왔습니다. 방법 #3 는 추가했는데, 방법 2는 처음 본 것이네요

The ADAPTIVE Communication Environment (ACE)
최근에는 ACE class library를 활용한 개발이 활발히 이루어지고 있는데, 아마도 개발이 편리하게 해주는 클래스들이라는 점과, 상당히 오랜 기간, 오랜 사람들로 하여금 안정화되었다는 점, 실제로 꽤 많은 미션 크리티컬 영역에서도 사용되고 있다는 점이 높이 평가된듯 하다.

이 ACE를 솔라리스10 에서 컴파일해서 사용하려고 하면, 몇가지 방법이 있다.

[download source]
일단, 정상적인 화일을 다운받는다. 이상하게 들릴지 모르겠지만, 위의 링크에서 ACExxx.zip 과 ACExxx.tar.gz는 약간 다르다. 앞으로는 고쳐질지 모르겠지만, zip 화일은 텍스트 끝마다 ^M이 붙어있어서 솔라리스에서 컴파일할때 에러가 발생한다. #inlcude, #define과 같은 라인에서 에러 발생. 따라서, 솔라리스에서 빌드하고자 한다면, tar.gz 포맷 화일을 다운받는다. 아마도, zip 버젼은 윈도우즈에서 작성한듯 하다.

[펌한 사람 주의] 소스만 받아서는 아니된다.

[ How to build #1 ]
$ACE_ROOT/include/makeinclude/platform_macros.GNU를 sunos5_sunc++.GNU에 링크를 하고, $ACE_ROOT에서 gmake를 실행하면 된다. gmake는 /usr/sfw/bin에 있으므로 미리 PATH에 /usr/sfw/bin이 적용되어 있는지 확인하도록 한다.

[ How to build #2 ]
대개의 표준 리눅스 빌드판처럼 configure를 이용해서 새로이 빌드 환경을 구성해서 컴파일할 수도 있다.
썬컴파일러만 있는 경우(/opt/SUNWspro/bin)에 $ACE_ROOT 서브디렉토리로 solaris10-amd64와 같이 컴파일된 바이너리를 오브젝트용 디렉토리를 만든다.

cd $ACE_ROOT/solaris10-amd64
../configure --prefix=/usr/local CC=cc CXX=CC
와 같이 실행한후 make, dmake, gmake 아무거나 사용해서 빌드를 시작한다. CPU가 많은 시스템에서는 dmake 사용을 권고한다. (프로세서 분산 컴파일을 한다. 특히, 썬의 T1000/T2000에서는 dmake 필히 사용)

주의할 점은 위처럼 기본 구성을 하는 경우, ACE는 SSL 사용을 기본으로 enable한다는 점이다. 솔라리스에는 openssl이 기본으로 안들어있으므로, 사전에 다운로드 해놓아야 한다는점이다. 만약 SSL을 사용하지 않을 예정이면, --disable-ssl을 configure시 추가해서 지정해서 구성한다.

[ How to build #3 ]

ACE컴파일하는 방법입니다.

ACE 컴파일하기 unix기반

1. ACE_ROOT를 세팅한다.
ex)
.profile을 열어서 다음을 넣어준다.
ACE_ROOT = /data/phyoon/MagicPKI30/ACE-5.3/ACE_wrappers

2. platfrom_macros.GNU를 만든다.
가장 가까운 platfrom과 심벌릭 링크를 하여 platfrom_macros.GNU를 만든다.
makeinclude로 이동한다.

cd /data/phyoon/MagicPKI30/ACE-5.3/ACE_wrappers/include/makeinclude

예를 들어 sun 5.x 가 O/S고 sunc++을 쓴다면
ln -s platform_sunos5_sunc++.GNU platform_macros.GNU
를 한다.

3. config.h를 만든다.
가장 가까운 O/S와 심볼릭 링크하여 config.h를 만든다.

cd data/phyoon/MagicPKI30/ACE-5.3/ACE_wrappers/ace
ln -s config-sunos5.8.h config.h

4. 컴파일을 한다.
ace 디렉토리로 이동한다.
cd /data/phyoon/MagicPKI30/ACE-5.3/ACE_wrappers/ace

gmake명령을 내린다.

컴파일이 완료되면 ace library를 사용할 수 있다.

[performance]
cpu가 하나만 있는 시스템에서는 멀티스레드를 사용하는 것이 성능을 저해시킨다. 따라서 이 경우에는 멀티스레드를 죽이는 것이 좋다.


[추가]
정적라이브러리를 원한다면... gmake static_libs=1 로 하고, 아니면 기본값인 동적라이브러리를 생성한다.



댓글