2009-11-27 84 views
0

所以这里是故事。我有这个设备使用Linux和更多的开源工具(顺便说一句,它是一个ARM)。我被赋予了创建一些魔术出纳应用程序的任务。Oracle C++ linux和更奇怪的东西

我已经做到了,现在我的老板已经提出了新的要求。他希望我让这些东西(设备)连接到远程数据库(最好是Oracle)。这就是我开始使用轻量级版本的Oracle即时客户端所做的事情。一切都很好,并冷却,直至我跑我的第一个Hello World:

#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,螺纹; 并设置库搜索路径,以及其他东西:“$ {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-我不知道如果我应该在编译之后将这些库文件移动到设备上,所以如果有人能够给我这方面的指导,我会非常感激。

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

编辑

于两个第一答案,不,我还没有发现任何具体的ARM库,我不认为有任何。

这里是链接,如果任何人都可以找到任何类似于ARM分布的东西,我会感激的。 有两个RISC分布,但我不知道他们是否与ARM兼容:

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

回答

1

如果没有Oracle库的ARM版本,你完全不走运的还有并需要获得一个(也许有一个免费的驱动程序?)或手动实施有线协议。

0

那么我很确定,如果你在Windows机器上运行,你需要Windows版本的Oracle客户端。

+0

我将如何让它在我部署的linux中运行?库和编译软件之间是否存在任何硬性依赖关系? – 2009-11-27 14:30:56

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

第三个选项会让我的生活变得很容易,但是,为什么我不想让设备直接与数据库交谈? – 2009-11-27 14:42:17

+0

http://en.wikipedia.org/wiki/Multitier_architecture 基本上它允许独立性;允许数据库和端点被替换而不需要另一个改变。它避免了您正在遇到的问题 - 需要专用的设备库。 – 2009-11-27 15:01:56

1

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

如果没有,您将不得不使用ODBC或其他可以编译的具有开源客户端的数据库。

1

如何使用java与jdbc驱动程序? Oracle瘦驱动程序是纯java的,所以它应该可以工作。如果您无法编写纯Java应用程序并需要在您的arm设备上使用其他库,则可以使用来自java的JNI调用来使用native-arm库。

0

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