求Linux下 OCCI 程序的makefile

Lonelywolf1899 2010-06-03 04:44:21
程序是在 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 -locci

s1: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.c

clean:
rm s1 main.o db_occi.o

但是执行 make 的时候报错:
make: *** No rule to make target `db_occi.c', needed by `db_occi.o'. Stop.

求高手指点啊!

^_^
...全文
158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iihero_ 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lonelywolf1899 的回复:]

请问怎么设置 LD_LIBRARY_PATH 啊?

^_^
[/Quote]
去linux版 问吧。:-)
Lonelywolf1899 2010-06-04
  • 打赏
  • 举报
回复
请问怎么设置 LD_LIBRARY_PATH 啊?

^_^
iihero_ 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lonelywolf1899 的回复:]

/oracle/product/10g/lib/libocci.so
有这个文件
libclntsh.so.10.1
这个文件也有
也在 /oracle/product/10g/lib 文件夹下

怎么回事啊?

^_^
[/Quote]
有就好说。先把libstd*.so那个问题解决了,你得先装低版本的stdc++.5的库。不然,就没法子跑你的应用了
然后,LD_LIBRARY_PATH设置好,自然就能找到libclntsh.so.10.1了。
Lonelywolf1899 2010-06-03
  • 打赏
  • 举报
回复
/oracle/product/10g/lib/libocci.so
有这个文件
libclntsh.so.10.1
这个文件也有
也在 /oracle/product/10g/lib 文件夹下

怎么回事啊?

^_^
iihero_ 2010-06-03
  • 打赏
  • 举报
回复
你这个问题多多啊。
没有完好安装oracle client环境吧。
libclntsh.so.10.1,找找有没有这个库
libstdc++.so.5这个是必须的。
没有的话,基本上没戏。
Lonelywolf1899 2010-06-03
  • 打赏
  • 举报
回复
谢楼上的提醒

现在能生成 可执行文件 了。
只是还有个警告:
/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

^_^
iihero_ 2010-06-03
  • 打赏
  • 举报
回复
明明是:db_occi.cpp啊,你的makefile里头怎么变成了db_occi.c呢?改改吧。
ngx20080110 2010-06-03
  • 打赏
  • 举报
回复
不懂,學習

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧