求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.

求高手指点啊!

^_^
...全文
168 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
不懂,學習
机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库 1、先到Oracle网站下载Instant Client : http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html 根据你的操作系统选择不同的Instant Client版本 下载会是一个压缩文件,解压之后的文件夹叫:D:/instantclient_11_2.放在你喜欢的目录即可.例如:D:/instantclient_11_2 2、在D:/instantclient_11_2目录下新建目录network,在network目录下再新建admin目录,在admin目录下新建文件tnsnames.ora,使用文本编辑器打开写入如下内容: ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58 )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL ) ) ) 第一个黄色字块:表示定义远程服务器的在本地主机名 第二个黄色字块:远程数据库的IP地址 第三个黄色子块:远程数据库实例名 3、添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径。比如我的本机为:D:/instantclient_11_2/network/admin 4、设置ORACLE的语言,添加环境变量NLS_LANG ,值为: AMERICAN_AMERICA.AL32UTF8 该值可以连接到远程数据库中,通过下面的sql语句查询得到: select userenv('language') from dual; 如果该值设置不正确,将导致PL/SQL Developer连接数据库后,查看的数据会出现乱码。 5、下载并安装PL.SQL.Developer配置应用 配置tools->preferences->connection Oracle Home D:/instantclient_11_2 OCI library D:/instantclient_11_2/oci.dll 中文的PL/SQL Developer就是 工具-->首选项-->连接 Oracle主目录 D:/instantclient_11_2 OCI库 D:/instantclient_11_2/oci.dll 6、关闭PL/SQL Developer,重起Developer. 主机名就会出现在PL/SQL Developer的列表里,输入用户名密码,就可以登录远程oracle 11g数据库了。 补充Instant Client 说明 Oracle Instant client 是oracle提供的简便客户端, 支持多种平台. 可从oracle网站下载, 下载地址为 http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html 包括如下内容: Instant client Package - Basic 运行OCI, OCCI, 和JDBC-OCI应用程序需要的所有文件. Instant client Package - Basic Lite: 只包含英语错误信息, 只支持unicode, ascii, 西欧字符集. Instant client Package - JDBC Supplement 为jdbc增加了xa, 国际化和RowSet操作. Instant Client Package - SQL *Plus 包含sqlplus和需要的库文件 Instant client Package - SDK 使用Instant Client开发Oracle 应用程序需要的头文件及示例makefile Instant client package - ODBC 使用odbc时需要的库, 不是所有平台都有. linux平台包含. Basic 和Basic Lite两个中必须选一个, 其他包都是可选的. 我下载 了 Basic, JDBC supplement, SQL *Plus, SDK, ODBC. 解压后放在一个文件夹下, 在这个文件夹下建立文件 tnsnames.ora, 设置环境变量LD_LIBRARY_PATH和TNS

17,137

社区成员

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

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