[질문] oracle pro*c 컴파일 문제입니다.
글쓴이: cjy1126 / 작성시간: 수, 2003/04/02 - 11:38오전
proc proc.pc 를 하면, proc.c 와 proc.lis가 생깁니다.
gcc -o proc proc.pc 를 하면 proc.c:215: redefinition of `struct sqlca' 에러가 나옵니다. ㅜ.ㅜ
여기 저기 찾기를 3시간째... 답답하네요.
MAKE 파일로 만들라고 나오는데, MAKE 파일을 어떤식으로 작성하는지도 모르겠고, demo_proc.mk를 봐도 알아보지 못해서 수정도 못하네요.
조언 & 도움 부탁드리겠습니다.
밑에는 제가 쳤던 소스입니다.
=============================================== #include <stdio.h> #include <sqlca.h> #include <stdlib.h> EXEC SQL BEGIN DECLARE SECTION; VARCHAR user_id[20]; VARCHAR passwd[20]; VARCHAR saddr[16]; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA; #define USERID "mini" #define PASSWD "mini" void get_data(); main() { strcpy(user_id.arr, USERID); strcpy(passwd.arr, PASSWD); user_id.len = strlen(user_id.arr); passwd.len = strlen(passwd.arr); EXEC SQL CONNECT : user_id IDENTIFIED BY :passwd; if(sqlca.sqlcode<0) { printf("\n%s", sqlca.sqlerrm.sqlerrmc); EXEC SQL ROLLBACK WORK RELEASE; exit(1); } else { printf("\nConnected to Oracle."); EXEC SQL COMMIT WORK RELEASE; get_data(); } exit(0); } void get_data() { EXEC SQL SELECT SADDR INTO : saddr FROM SERVER; printf("\n 차단된 IP:"); printf("\n %s", saddr); }
Forums:
Re: [질문] oracle pro*c 컴파일 문제입니다.
gcc 로 다시 pc를 컴파일하는 것은 아닙니다.
proc를 통해서 *.pc 가 *.c가 되고 이 *.c를 다시 gcc로 컴파일하시면 됩니다. 아래처럼 보면 proc로 sample.pc가 파싱되어서 sample.c가 나오고 이걸 다시 gcc로 컴파일하는 겁니다.
proc <options...> iname=sample oname=sample.c
gcc -o sample sample.c
========================================
* The truth will set you free.
아마 gcc proc.pc 라고 쓰신건 gcc proc.c를 오타로 잘못
아마 gcc proc.pc 라고 쓰신건 gcc proc.c를 오타로 잘못 쓰신거 같구요..
정확한 원인은 모르겠네요. 어떤 이유로 인해서 sqlca 스트럭쳐가 2번 정의
되었다는 것 말고는요...
흠.. 혹시나 #include<sqlca.h>를 빼면 될지도..-_-a
답변 감사드립니다. ^^
아래와 같이 해결했습니다.
gcc -o test test.c -L/usr/oracle/product/8.1.7/lib/ -lclntsh `cat /usr/oracle/product/8.1.7/lib/sysliblist` -ldl -lm
gcc -o test test.c 로 잘되던게 왜 갑자기 이렇게 됐는지 모르겠지만요.
제가 makefile 만드는것과 내공이 약해서요.
도움 감사드립니다.
많은 공부했습니다. ^^
Makefile 단순하게 하나 만들어 봅니다.[code:1]PRO
Makefile 단순하게 하나 만들어 봅니다.
댓글 달기