2012-06-12 3 views
0

OCCI 라이브러리를 사용하여 기본 프로그램을 컴파일하려고합니다.Linux에서 g ++로 OCCI 컴파일

컴파일 작업이 정상입니다.

g++ -I. -g -I/opt/oracle/product/10.2.0/db_1/precomp/public -I/opt/oracle/product/10.2.0/db_1/rdbms/public -I/opt/oracle/product/10.2.0/db_1/rdbms/demo -I/opt/oracle/product/10.2.0/db_1/plsql/public -I/opt/oracle/product/10.2.0/db_1/network/public -DMAX_SEND_SIZE=2000 -c -o test.o test.cpp 

출력이 정상이면 test.o가 생성됩니다. 그러나, 나는

링킹 작업이 실패
g++ -L/opt/oracle/product/10.2.0/db_1/lib/ -lclntsh -locci -o test test.o 

, 출력은 다음 명령으로 오브젝트 파일을 링크 할 때

test.o: In function `main': 
/home/xxx/occi/test.cpp:128: undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))' 
/home/xxx/occi/test.cpp:170: undefined reference to `oracle::occi::Environment::terminateEnvironment(oracle::occi::Environment*)' 
/home/xxx/occi/test.cpp:158: undefined reference to `oracle::occi::SQLException::~SQLException()' 
/home/xxx/occi/test.cpp:158: undefined reference to `oracle::occi::SQLException::SQLException(oracle::occi::SQLException const&)' 
/home/xxx/occi/test.cpp:163: undefined reference to `oracle::occi::SQLException::what() const' 
/home/xxx/occi/test.cpp:158: undefined reference to `oracle::occi::SQLException::~SQLException()' 
test.o:(.gcc_except_table+0xe0): undefined reference to `typeinfo for oracle::occi::SQLException' 
collect2: ld returned 1 exit status 

내 환경 이력서 :

  • 우분투 Linux 11.04
  • gcc 버전 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
  • ORACLE_HOME = /opt/oracle/product/10.2.0/db_1
  • LD_LIBRARY_PATH = /opt/oracle/product/10.2.0/db_1/lib
  • Oracle 버전 : 10.2.0

당신이 날 도와 드릴까요 제발?, 정말 리눅스에서 OCCI를 사용하여 오라클에 연결해야하고 Pro * C를 사용하고 싶지 않습니다.

+0

이 라이브러리를 변경 시도 가지고 순서를 포함 http://xme.im/connect-oracle-database-eclipse-linux-using-occi

로 첫 nnz11 lib 디렉토리에 링크해야 링크 단계에서? 이것은 중요 할 수 있습니다. – mathematician1975

+0

예, 시도했지만 결과는 같습니다. – fdaines

답변

0

OCCI를 사용하려면 Oracle에서 제공 한 Instant Client를 설치해야합니다 (설치 했습니까?). Oracle 11.2를 사용하고 있으므로 include 디렉토리 경로는 /usr/include/oracle/11.2/client64이고 공유 라이브러리는 /usr/lib/oracle/11.2/client64/lib입니다.

나는 10.2 경로 /usr/lib/oracle/10.2.0.4/client/include입니다

http://173.255.217.246:8000/mapnik_trac/wiki/OCCI 

것을 여기에보고

을 /usr/lib/oracle/10.2.0.4/client/lib 11.2에서

, 나는 또한 유용한 블로그가 인스턴트 클라이언트에 대한 설명입니다이 http://oradim.blogspot.com/2009/08/getting-started-with-occi-linux-version.html

관련 문제