Oracle C ++ linux和更奇怪的东西

时间:2009-11-27 14:09:01

标签: c++ windows linux eclipse oracle

所以这是故事。我有这个使用Linux和更多开源工具的设备(顺便说一句,它是 ARM )。我被赋予了创建一些魔术收银员应用程序的任务。

我已经完成了,现在我的老板提出了新请求。他希望我将这些东西(设备)连接到远程数据库(最好是 Oracle )。这就是我开始使用oracle即时客户端的简易版本。一切都很好,很酷,直到我跑第一个你好的世界:

#include <occi.h>

using namespace oracle::occi;

int main(){
  Environment *env = Environment::createEnvironment();
  Connection *conn = env->createConnection("HR", "password");
  env->terminateConnection(conn);
  Environment::terminateEnvironment(env);
  return 0;
}

链接 occi,clntsh,thread ; 并将库搜索路径和其他内容设置为:“ $ {workspace_loc:/ OracleTest / instantclient_10_2} ”这是保存 .so 文件的目录;

这是编译命令:

ucfront-g++ -Wl,-elf2flt="r" -static -o OracleTest  ./main.o   -locci -lclntsh -lthread -L/usr/local/arm-elf/lib -L"C:\workspace\OracleTest\instantclient_10_2" -L/usr/local/fit-libs/lib

这是错误:

/usr/local/arm-elf/bin/ld.real: cannot find -locci collect2: ld returned 1 exit status

我想提一下几件事:

1-我正在运行 windows 并为 linux 进行编译,我下载的即时客户端版本是针对linux x86的(不知道是否可行)或者它可能是问题的根源。)

2-我正在使用 eclipse 的修改版本进行开发,特定于该设备。

3-我不知道在编译之后是否应该将那些 Oracle 库移动到设备上,所以如果有人能给我这个方向,我会非常感激。

TLDR:我不想编译上面的代码,但它无法链接,请帮助!

修改

对于第一个答案,我没有找到任何特定的ARM库,我认为没有。

如果有人能找到类似于ARM发行版的任何内容,那么这就是链接我会感激不尽。 有两个 RISC 分布,但我不知道它们是否与 ARM 兼容:

Instant Client for HP-UX PA-RISC (64-bit)
Instant Client for HP-UX PA-RISC (32-bit) 

6 个答案:

答案 0 :(得分:1)

如果您没有ARM版本的ARM库,那么您完全没有运气,需要获得一个(可能有一个免费的驱动程序?)或手动实现有线协议。

答案 1 :(得分:1)

嗯......是否有针对Linux + ARM的即时客户端(或任何Oracle客户端)?我没有在下载页面上看到一个。

如果没有,则必须使用ODBC或其他具有可编译的开源客户端的数据库。

答案 2 :(得分:1)

如何将java与jdbc-driver一起使用? Oracle-thin-driver是纯java的,因此它应该可以正常工作。如果您不能编写纯java-app并且需要在arm-device上使用其他库,则可以使用java中的JNI调用来使用本机库。

答案 3 :(得分:0)

如果您在Windows机器上运行,我非常确定您需要Windows客户端的Windows版本。

答案 4 :(得分:0)

  1. 您需要在-L参数之前移动-l个参数。
  2. 您需要在设备上运行ARM库,而不是x86库,不知道Oracle是否提供这些库。
  3. 您可能不希望设备直接访问数据库。最好将中间层服务器放在堆栈中,让设备与之通信(通过XML-RPC或其他RPC协议)。

答案 5 :(得分:0)

你最好的机会是使用Java和JDBC驱动程序,如tjin所建议,或完全忘记直接连接数据库的想法;在服务器上创建一个Web服务,然后使用它。