程序是在 Windows 下面写的,编译通过了。但是在Linux下面不知道怎么编译,求高手帮忙!代码分成三个文件: main.cpp db_occi.h db_occi.cpp
这三个文件,前面的部分是这么写的:db_occi.h
//------------------------------------------------------------
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <assert.h>
#include <occi.h>
#include <occiCommon.h>
#include <occiData.h>
#include <occiObjects.h>
#include <occiAQ.h>
#include <occiControl.h>using namespace oracle::occi;class dbAccessor
{
略db_occi.cpp
//------------------------------------------------------------
#include "db_occi.h"using namespace std;
using namespace oracle::occi;dbAccessor::dbAccessor()
{
 bConnected=false;
 m_env=0;
 m_conn=0;
 m_stmt=0;
}
 
dbAccessor::~dbAccessor()
{
 Disconn_DB();
}
略main.cpp
//------------------------------------------------------------
#include<string>
#include<string.h>
#include<stdlib.h>
#include<occi.h>
#include<occiCommon.h>
#include<occiData.h>
#include<occiObjects.h>
#include<occiAQ.h>
#include<occiControl.h>#include "db_occi.h"using namespace std;
using namespace oracle::occi;int main(void)
{
略我现在的makefile是这么写的(不太了解makefile的写法,瞎写的):
文件makefile
#************************************************************
ORACLE_INCLUDES=-I$(ORACLE_HOME)/rdbms/demo \
                -I$(ORACLE_HOME)/rdbms/public \
                -I$(ORACLE_HOME)/plsql/public \
                -I$(ORACLE_HOME)/network/public \
                -I$(ORACLE_HOME)/precomp/public
               
ORACLE_LIBS=-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib
INC=$(ORACLE_INCLUDES)
LIB=$(ORACLE_LIBS) -lclntsh -loccis1:main.o db_occi.o
g++ $(INC) $(LIB) -o s1 main.o comm.o
main.o:main.cpp
g++ $(INC) $(ORACLE_LIBS) -c main.cpp
db_occi.o:db_occi.h db_occi.c
g++ $(INC) $(ORACLE_LIBS) -c db_occi.cclean:
rm s1 main.o db_occi.o但是执行 make 的时候报错:
make: *** No rule to make target `db_occi.c', needed by `db_occi.o'.  Stop.求高手指点啊!^_^

解决方案 »

  1.   

    明明是:db_occi.cpp啊,你的makefile里头怎么变成了db_occi.c呢?改改吧。
      

  2.   

    谢楼上的提醒现在能生成 可执行文件 了。
    只是还有个警告:
    /usr/bin/ld: warning: libstdc++.so.5, needed by /oracle/product/10g/lib/libocci.so, may conflict with libstdc++.so.6然后,运行的时候,会有下面的错误:
    ./s1: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory^_^
      

  3.   

    你这个问题多多啊。
    没有完好安装oracle client环境吧。
    libclntsh.so.10.1,找找有没有这个库
    libstdc++.so.5这个是必须的。
    没有的话,基本上没戏。
      

  4.   

    /oracle/product/10g/lib/libocci.so
    有这个文件
    libclntsh.so.10.1
    这个文件也有
    也在 /oracle/product/10g/lib 文件夹下怎么回事啊?^_^
      

  5.   

    有就好说。先把libstd*.so那个问题解决了,你得先装低版本的stdc++.5的库。不然,就没法子跑你的应用了
    然后,LD_LIBRARY_PATH设置好,自然就能找到libclntsh.so.10.1了。
      

  6.   

    请问怎么设置 LD_LIBRARY_PATH 啊?^_^