티스토리 뷰

반응형

리눅스 환경에서 PRO*C ( oracle pre compiler ) 설치 및 설정 방법에 대한 팁입니다.

설치하느라 몇시간 동안 인터넷 이곳 저곳을 찾아다니고, 설치후에도 에러 때문에 고생을 많이 했습니다.


oracle precompiler 를 설치하기 위해서는 기본적으로 오라클 클라이언트가 필요합니다. 오라클 클라이언트는 oracle enterprise 버전에 포함되어 있는 프로그램으로 universal Installer를 실행시키면 설치 옵션에서 선택하여 설치 할 수 있습니다.

리눅스는 윈도우용과 달리 사용하고자 하는 시스템에 오라클 클라이언트를 직접 설치 할 필요는 없고, 다른 시스템에 설치 되어 있는 오라클 클라이언트 프로그램을 복사해서 디렉토리를 생성해준 후에 설정파일만 수정 해주면 precompiler 를 사용할 수 있습니다.


1. oracle client를 설치 하거나 설치되어 있는 oracle client 디렉토리를 그대로 복사한다.

 : 디렉토리를 복사해준 다음에는 사용자 계정의 .bash_profile 파일에 오라클 홈디렉토리와 같은 설정을 해주어야 합니다.


### sample ###


umask 022
export ORACLE_TERM=vt100
export LD_ASSUME_KERNEL=2.2.5
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
export ORACLE_OWNER=oracle
export ORACLE_SID=ORA817
export TMP_DIR=$ORACLE_BASE/tmp
export PATH=.:$ORACLE_HOME/bin:/usr/local/java/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=American_America.KO16KSC5601
export ORA_NL33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LANG=C



2. $ORACLE_HOME/network/admin/tnsnames.ora 파일에서 접속하려고 하는 오라클 DB 서버의 서비스를 설정(디렉토리를 복사 했을 경우)

 : 접속을 원하는 원격 오라클 서버에 대한 정보를 기입해 줍니다.


3. $ORACLE_HOME/precomp/admin/pcscfg.cfg 파일 설정(최초 설치시 비어있음)

 : 이 설정 파일은 오라클 클라이언트를 최초 설치 했을때 비어 있는 파일에 추가 해주어야 하는 내용입니다. 간단한 설명을 하자면 CODE=cpp 일 경우 pc파일(PRO*C 소스파일) 을 컴파일 하였을 때 생성되는 소스파일을 cpp파일로 하겠다는 의미이며, SYS_INCLUDE 와 INCLUDE 는 precompiler 를 위한 헤더파일이 있는 위치를 의미합니다. 기본적으로 아래와 같이 설정합니다.


### sample 1 ###

CODE=cpp

SYS_INCLUDE=($ORACLE_HOME/precomp/syshdr, /usr/include)

INCLUDE=$ORACLE_HOME/precomp/public

CPP_SUFFIX=cpp

DBMS=v8


### sample 2 ###

CODE=cpp
SYS_INCLUDE=($ORACLE_HOME/precomp/syshdr, /usr/include, /home/spike/TBS/include, /home/spike/TBS/TTS_daemon_seoul/include, /        usr/include/g++-3)

INCLUDE=$ORACLE_HOME/precomp/public
CPP_SUFFIX=cpp
DBMS=v8


두번째 샘플은 SYS_INCLUDE 에 path가 몇개 추가 되었는데 사용자의 프로그램 소스에 포함될 헤더파일의 경로와 특정 헤더 파일이 없다는 에러가 나오면 전체 디렉토리에서 해당 헤더 파일의 경로를 찾아서 추가 해야 합니다.

설치할때 stddef.h 나 stdarg.h 파일을 찾을 수 없다는 에러가 가장 많이 발생 하게 되죠...


해당 헤더 파일을 찾았지만 존재하지 않을 경우에는  gcc 를 2.9 이상의 버전으로 설치합니다.


다음과 같이 mySource.pc 파일을 컴파일 하면

spike@localhost>precomp mySource.pc

mySource.cpp 파일과 같은 C파일이 생성되며


컴파일이 끝나고,

오브젝트 파일 링크시

정의되지 않은 sqlctx( … ) 에러가 나올 경우

g++ -o filename.o -L$ORACLE_HOME/lib -lclntsh

와 같이 makefile 에 라이브러리 경로 옵션을 설정 하면 됩니다~~~

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함