proc & make 질문입니다.: c에서 proc 호출하기...

익명 사용자의 이미지

안녕하세요...
제가 하려는 것은 3개의 화일이 있습니다. A.c myProc.h myProc.pc
c 화일에서 proc를 호출하는것을 만드는 make를 만들려구 합니다.
A.c
#include
#include "myProc.h"
int main()
{
call_A();
socket(...);//socket통신을 위해서 make에서 -lnsl -lsocket필요
call_proc();
}
call_A(){....};
==================================
myProc.h
#incude
void call_proc();
void call_A();
===================================
myProc.pc
void call_proc(){ ...connectDB.. Select DB... Release.. }
===================================
이런 것을 만드려구 하는데요... 환경이 gcc 여서...
oracle/precomp/demo/ 의 demo.mk는 동작지 않았습니다.
http//database.sarang.net/database/oracle/oracle-general/gcc-proc
그래서 여기에서 ...받은 make 를 수정해서 사용하려구 하는데.
[위의 받은 make샘플은 제대로 동작하구요] 제대로 동작하지 않네요..
pc샘플은 sample2.pc 에서 main() ==> call_proc() 로 바꾸어서..사용하
였구요..

제가 수정한 부분을 확인부탁드립니다..
아직 make에 미흡해서... 어떻게 연결해야 할지...안 되는군요..(죄송)
CC=gcc
SAMPLES=mysample1
#samples $(SAMPLES)
#build $(OBJS)
# $(CC) -o $(EXE) $(OBJS) -L$(LIBHOME) $(PROLDLIBS)
#build_static $(OBJS)
# $(CC) -o $(EXE) $(OBJS) -L$(LIBHOME) $(STATICPROLDLIBS)
#$(SAMPLES) $(OBJECT_SAMPLES)
# $(MAKE) -f $(MAKEFILE) OBJS=$@.o EXE=$@ build
#============================> 위를 아래 처럼 수정하였습니다.
samples $(SAMPLES)
$(OBJS) mymain.o myProc.o
mymain $(OBJS)
[tab] $(CC) -o $* $(OBJS) -L$(LIBHOME) $(PROLDLIBS) -lnsl -lsocket
myProc.o myProc.pc myProc.h
mymain.o mymain.c myProc.h
#<==========================================
이렇게만 하면 되는 것으로 생각되는데.... 동작이 제대로 이루어 지지
않네요..

익명 사용자의 이미지


음.. 저는 오라클에서 제공하는 샘플 makefile이 영 맘에들지 않더라구요.
여러경우에 돌아갈 수 있도록 한 것은 좋은데,
정작 32bit를 64bit로 바꾼다든지, static 를 dynamic하게 바꾼다든지 하
려면 많은 삽질을 해야 되더라구요.
(물론 제가 잘 몰라서 그렇겠지요.. -_-;;)

makefile을 쓸 줄 아신다면 자기 환경에 맞도록 간략하게 만드시는 것도
좋을 듯 합니다.

말씀하신 사항으로 함 만들어 봤습니다.
CC = gcc로 바꾸시고, CFLAGS 적절하게 세팅하심 되겠습니다.
헤더파일 디펜던시 추가하시구요.
테스트는 안 해 보았습니다. 참고만 하십시오. -_-;;

CFLAGS 는 C 파일 컴파일시 주는 옵션이고,
PROCFLAGS는 Pro*C를 이용해 프리컴파일할 때 주는 옵션이고,
PCCFLAGS는 Pro*C를 이용해 프리컴파일된 C 파일을 컴파일할 때 주는 옵션
입니다.
LDFLAGS는 링커(ld) 에게 주는 플래그입니다.

#####################################################################
###
# Makefile
#####################################################################
###

include $(ORACLE_HOME)/precomp/lib/env_precomp.mk

CC = cc
PROC = $(ORACLE_HOME)/bin/proc
ORACLE_LIBDIR = $(ORACLE_HOME)/lib

INCL = -I$(HOME)/include -I.
PROCINCL = -I$(ORACLE_HOME)/precomp/public

PROCFLAGS = LINES=YES CODE=ANSI_C
CFLAGS = -g
LDFLAGS =
PCCFLAGS = $(CFLAGS) $(PROCINCL) $(INCL)
PROCLIB = -L$(ORACLE_LIBDIR) -lclntsh -lcore8 \
`cat $(ORACLE_LIBDIR)/sysliblist`
MYLIB = -lnsl -lsocket

#####################################################################
###

.SUFFIXES .pc .c .o .typ .h

.pc.o
$(PROC) $(PROCFLAGS) iname=$*
$(CC) $(PCCFLAGS) -c $*.c

.c.o
$(CC) $(CFLAGS) $(INCL) -c $*.c
#####################################################################
###

DBSRC = myProc.pc
DBCSRC = ${DBSRC.pc=.c}

CSRC = myMain.c
OBJS = ${CSRC.c=.o} ${DBSRC.pc=.o}

TARGET = myprog

#####################################################################
###

all $(TARGET)

$(TARGET) $(OBJS)
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJS) $(PROCLIB) $(MYLIB)
-@rm $(DBCSRC) > /dev/null 2>&1

clean
-@rm $(TARGET) $(OBJS) $(DBCSRC) core >/dev/null 2>&1

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.