컴퓨터공부/C & C++ & STL

STL port 깔기

achivenKakao 2005. 1. 3. 20:13
 

*VC 6++용 STLport의 빠른 설치 가이드
(Quick Install Guide for STLport on VC 6++)

문서 정보

최초 작성 :2001/03/02

최종 업데이트 : 2001/05/15

포스팅 : 2001/03/07

적용 플랫폼 : Win32 / VC++ 6

작성자 : 곽용재 (kwak101@hitel.net)

1. 들어가기 전에



본 문서는 Win32 환경에서 Visual C++ 를 사용하시는 분들이 STLport

STL 라이브러리를 설치하여 사용하는데 도움을 주기 위하여

작성되었습니다. 가장 최소한의 설치 과정만을 싣는데 초점을 두었으며,

Visual C++ 6 이하의 버전에서는 테스트하지 않았음을 미리 알려

드립니다. 기타 세세한 정보는 외부 자료 문서화 페이지 혹은 게시판에서

얻고, 나누어 주시기 바랍니다. 감사합니다.

STLport 라이브러리는 SGI(실리콘 그래픽스)의 STL을 여러 가지 운영체제

 및 개발 도구에서 쓸 수 있도록 포팅한 것으로, ANSI 표준안을 충실히

따르고 있으며 이외의 비표준 라이브러리도 충실히 구비해 놓고 있는

공개 라이브러리입니다.

잘 아시겠지만, 본 문서는 읽으시는 분께서 Visual C++ 개발 환경과

 C++ 사용에 불편해하지 않고 DOS 화면을 두려워하지 않는다는

가정 하에 작성했고, 윈도우 환경을 최대한 사용하는 쪽으로

작성하였습니다. :)

2. 라이브러리 받아 놓기


가) STLport 패키지의 압축 파일을 받습니다. 현재의 안정화 릴리즈는

4.5.3 (STLport-4.5.3.zip)입니다.

http://www.stlport.org/download.htm
l



나) 만만해 보이는 디렉토리에 압축을 풉니다. 되도록 개발도구가 설치된

디렉토리와는 멀수록 덜 불안하겠지요?
(참고로, 제 Visual Studio는 D:\Programming Files2 에 있습니다)




다) 순서대로 간단히 디렉토리 설명을 드리면 다음과 같습니다.

일단 훑어만 보시죠.

doc : 라이브러리 설치 도움말 및 라이브러리 레퍼런스가 들어 있는

         디렉토리.

etc : 말 그대로 기타 잡다구리한 파일들이 있는 디렉토리

lib : 컴파일된 STLport 재사용 바이너리(lib, dll)가 들어가는 디렉토리

       처음엔 없다가 나중에 생길겁니다.

src: 재사용 바이너리를 빌드하기 위한 플랫폼 별 프로젝트 파일이

       있는 디렉토리.
(주의: vc6.mak 파일이 있는지 확인해 보세요. 빌드에 중요합니다)

stlport : STL 헤더와 바이너리 소스가 들어 있는 디렉토리.

             STLport 라이브러리의 몸통입니다.

test : STLport가 설치된 후 제대로 설치되었나 확인하기 위한

         테스트 프로그램 소스.

라) 다 되었으면, 3으로 넘어갑니다.

3. 라이브러리 컴파일하기



Visual C++에서 STLport가 제대로 쓰이는데 필요한 재사용 바이너리를

만드는 과정입니다.

가) Visual C++를 열고, File >Open 메뉴로 src\vc6.mak 메이크파일을

      읽어 들입니다.

아래와 같은 대화 상자가 나와 "프로젝트를 만들겠냐고 물어 보는데,

당연히 [예] 하시고, 적당한 이름(예: STLP_vc6)을 짓죠.
.dsp와 .dsw가 만들어 지면서 재사용 바이너리를 빌드할 수 있게 됩니다.

나) 재사용 바이너리는 STLport 패키지에 있는 표준 C++ 헤더를 사용하여

 빌드되므로, VC++이 이 헤더를 가장 먼저 참조할 수 있도록 해야 합니다.

 따라서 이 짓을 해 줍시다.

Tools >Options 메뉴 >Directories 탭에서, Include Files 목록에

stlport 디렉토리를 추가하고 나서 이것을 첫 줄로 올립니다.


다) 이제 Rebuild All을 하시든지 해서 라이브러리 빌드로 들어 갑니다,
이때, stlport\new 헤더 파일의 2줄에서 에러를 일으키는 경우가

있는데요, 네임스페이스 std::를 붙여 주도록 합시다.
(아래의 그림에서 if 다음의 2줄입니다)


라) 이제 다시 빌드합니다( - -; ). 시스템에 따라 차이는 있을 수 있으나

    1시간은 잘도 걸립니다.

참고로 저희 집에서는 주변에서 남는 부품을 모아 만든

Celeron 566Mhz / 128 MB 시스템을 쓰고 있습니다.
이 동안엔 인터넷도 할 수 없고 MSN 도 할 수 없어서 매우 답답합니다.

 마침 휴일(31절)이라, 저는 오우거배틀64를 했습니다 :)
미션 하나를 끝내고 나니 빌드가 모두 끝나 있더군요.


마) 빌드한 라이브러리를 확인합니다. 별다른 조정을 해 주지 않았다면

아래와 같이 lib 디렉토리와 함께 만들어질 것입니다.



재사용 바이너리는 총 6개입니다.
DLL은 debug/(release)의 2개이며, LIB은 debug/(release),

debug_static/(release)_static의 4개입니다.

4. 라이브러리 설치하기

만들어진 STLport의 재사용 바이너리와 표준 헤더를 비주얼 스튜디오에서

 쓸 수 있도록 해주는 과정입니다.

가) DOS 창을 열고, STLport 패키지가 풀린 위치를 기준으로

      src 디렉토리(위에서 확인하셨죠?)를 찾아 갑니다.


E:\STLport-4.5.3\src\

나) 도스 프롬프트에서 nmake install을 입력합니다.

E:\STLport-4.5.3\src\nmake install

E:\STLport-4.5.3\src\nmake -f vc6.mak

시스템이 알고 있는 비주얼 스튜디오의 인클루드 패스와 라이브러리

패스에 STLport 헤더와 바이너리가 복사될 겁니다.



참고) 만약에 nmake가 실행되는데 문제가 있거나 라이브러리 설치가

제대로 되어 있지 않다면, 비주얼 스튜디오에 관련된 환경 변수가

시스템에 제대로 등록되지 않았기 때문이므로, VCVARS32.BAT

실행한 후에 다시 nmake install을 해 보세요.

(이파일은 C:\Program Files\Microsoft Visual Studio\VC98\Bin

 여기에 있습니다.. 폐인약간수정..)

그래도 안될경우 (다른곳에 있던것 가져옴)

vcvars32.bat

copy vc6.mak makefile

nmake clean all

nmake install


다) 비주얼 C++가 이것을 가장 먼저 참조할 수 있도록 인클루드 경로를

조정합니다.
Tools >Options 메뉴 >Directories 탭에서, Include Files 목록에

방금 추가된 stlport 디렉토리

(대개 C:/Program Files/Microsoft Visual Studio/VC98/include/stlport

이겠지요)를 추가하고 나서 이것을 첫 줄로

올립니다. 

5. 테스트!


이제 다 끝났습니다. STLport가 제대로 설치되었는지 확인하는 의미에서,

패키지에 들어 있는

test\eh\vc6.mak
test\regression\vc6.mak

메이크 파일을 Visual C++을 사용하여 읽은 후에 빌드해 보세요. 자동으로

 테스트까지 해 줄 겁니다.

6. 빌드시 참고할점


가) "중복된 심볼" 링크 에러나는 경우

설치한 STLport를 가지고 실제 프로그램을 만들 때 링크에러가 나는

경우가 있습니다. 이것은 STLport의 입출력 라이브러리와 기존의

VC6 입출력 라이브러리의 심볼이 충돌하기 때문인데, STLport의 헤더에

정의된 것과 VC6의 헤더에 정의된 것이 완전히 일치하지 않기 때문에

(STLport에서 커버하지 못하는 부분을 VC6의 표준헤더 - STL 부분만이

아니라 - 가지고 있기도 해서) VC6의 링커가 이 두 개에 대한

라이브러리를 모두 링크하려고 하는 것입니다.
이 문제는
Project >Setting 메뉴에서 해결할 수 있습니다.

 C/C++ 탭 대화 상자의 콤보 박스에서 Code Generation을 선택하고,

 Use Runtime Library에서 Multithread DLL을 선택해 줍니다.

나) 플랫폼 SDK과 같이 사용할 경우 "InterlockedIncrement" 관련 컴파일

에러가 날 때

생기는 에러는 이런 류의 메시지입니다:

e:\microsoft visual studio\vc98\include\stlport\stl\_threads.h(122) : error C2733: second C linkage of overloaded function 'InterlockedIncrement' not allowed
e:\microsoft visual studio\vc98\include\stlport\stl\_threads.h(122) : see declaration of 'InterlockedIncrement'


이 컴파일 에러를 막으려면, STLport가 설치된 디렉토리(대개 C:/Program

Files/Microsoft Visual Studio/VC98/include/stlport이겠지요)

에서 stl_user_config.h를 찾아 열고, 다음 부분을 주석 해제합니다.

// # define _STLP_NEW_PLATFORM_SDK 1