makefile을 make로 precompile하기.
complie이란?
● 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꾸어 주는 과정.
● 원시코드에서 목적코드(목적파일)로 바꾸어 주는 것이 컴파일이고 목적 파일을 실행 파일로 바꾸는 것이 링크.
● 원시코드는 우리가 작성한 코드, 목적코드는 컴퓨터가 이해할 수 있도록 번역한 코드.
● 컴파일과 링크의 기능을 하는 것이 컴파일러이다.
-> 컴파일이란.. 내가 필요한 목적물로 만들어주는 용어라고 생각하면 됨.
makefile을 프리컴파일하기 위해서 설정 하는 내용
1. makefile 내에서 tuxedo 환경변수 / oracle DB id/passwd / 라이브러리 절대경로 설정
2. .bash_profile에서 buildserver의 절대경로를 환경변수로 잡아줘야함.
makefile
SPATH = ${PWD}
SRCINC = /sw/tp/tuxedo12.2.2.0.0/samples/atmi/simpapp/XA_test/serv
LIBHOME = /sw/tp/tuxedo12.2.2.0.0/lib
#RM = TMS_ORA19
RM = Oracle_XA
#CC = /usr/bin/cc
BUILDSVR = ${TUXDIR}/bin/buildserver
TUXINC = ${TUXDIR}/include
PROC = ${ORACLE_HOME}/bin/proc
# Oracle Environment ---------------------------------------------------------
ORAINCDIR=${ORACLE_HOME}/precomp/public
ORARDBDIR=${ORACLE_HOME}/rdbms/public
ORASQLDIR=${ORACLE_HOME}/plsql/public
ORALIBDIR=${ORACLE_HOME}/lib
ORABINDIR=${ORACLE_HOME}/bin
# Tuxedo Environment ---------------------------------------------------------
RM=Oracle_XA
TUXLIBDIR=${TUXDIR}/lib
TUXINCDIR=${TUXDIR}/include
# PROC Environment -----------------------------------------------------------
ORAID=jwchoi
ORAPW=welcome1
TUXINCDIR=${TUXDIR}/include
SYSINCDIR=${ONSE}/include
SYSHEADDIR=${ONSE}/header
#PROFLAGS=ireclen=132 oreclen=132 release_cursor=yes include='(${TUXINCDIR},${SYSINCDIR},${SYSHEADDIR})' userid=${ORAID}/${ORAPW} SQLCHECK=FULL
PROFLAGS=ireclen=132 oreclen=132 release_cursor=yes include='${TUXINCDIR}' userid=${ORAID}/${ORAPW} SQLCHECK=FULL
# CC Environment -------------------------------------------------------------
CC=gcc
#INCDIRS=-I. -I${ORAINCDIR} -I${ORARDBDIR} -I${ORASQLDIR} -I${TUXINCDIR} ${SYSINCDIR} -I${SYSHEADDIR}
INCDIRS=-I. -I${ORAINCDIR} -I${ORARDBDIR} -I${ORASQLDIR} -I${TUXINCDIR}
LIBDIRS=-L${ORALIBDIR} -L$(TUXLIBDIR)
CFLAGS=${INCDIRS} ${LIBDIRS}
all : XA_test
XA_test : ${SPATH}/XA_test.c ${SPATH}/XA_test.o
CFLAGS="${CFLAGS}" buildserver -s SINGLE_DELETE -s SINGLE_UPDATE -s SINGLE_INSERT -o XA_test -f XA_test.c -r ${RM}
#auth_carray: ${SPATH}/$$@.c ${SPATH}/$$@.o
# CFLAGS="${CFLAGS}" \
# buildserver -s CHECK_AUTH_C -o $@ \
# -f $@.o \
# -r ${RM}
.SUFFIXES : .pc .c .o
# Rule for creating bookkigrams from embedded SQL Bookigrams
.pc.c:
${ORACLE_HOME}/bin/proc ${PROFLAGS} iname=$*.pc
make 커맨드 실행
$ make
CFLAGS="-I. -I/orahome/db/product/19c/precomp/public -I/orahome/db/product/19c/rdbms/public -I/orahome/db/product/19c/plsql/public -I/sw/tp/tuxedo12.2.2.0.0/include -L/orahome/db/product/19c/lib -L/sw/tp/tuxedo12.2.2.0.0/lib" buildserver -s SINGLE_DELETE -s SINGLE_UPDATE -s SINGLE_INSERT -o XA_test -f XA_test.c -r Oracle_XA
프리컴파일이 실행되면서 실행파일 / c 파일 / o 파일이 생성됨
$ ls
XA_test XA_test.c XA_test.lis XA_test.o XA_test.pc common.h emp.flds makefile
'OS > Linux&Unix' 카테고리의 다른 글
[Linux/Unix] find / -name 'libclntsh.so.19.1' -type f (find 명령어로 파일/라이브러리 찾기) (0) | 2022.11.01 |
---|---|
[Linux] 파일 수정을 언제 했지? - stat /orahome/db/product/19c/lib/libclntsh.so.19.1 (0) | 2022.11.01 |
PCC-F-02104, Unable to connect to Oracle 에러 (0) | 2022.11.01 |
[Linux/Unix] 파일 용량 (0) | 2022.10.20 |
[Linux/Unix] awk 명령어 (0) | 2022.10.20 |