所以这是故事。我有这个使用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)
答案 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)
-L
参数之前移动-l
个参数。答案 5 :(得分:0)
你最好的机会是使用Java和JDBC驱动程序,如tjin所建议,或完全忘记直接连接数据库的想法;在服务器上创建一个Web服务,然后使用它。