【问题标题】:Issues with building PROC application using Oracle 10g 64 bit使用 Oracle 10g 64 位构建 PROC 应用程序的问题
【发布时间】:2010-10-18 16:19:56
【问题描述】:

我正在尝试在 Solaris SPARC 平台上使用 Oracle 10g 64 位以 32 位模式构建我的 PRO* C 应用程序。

谁能告诉我必须进行哪些设置才能成功编译并创建可执行文件?

目前,当我切换 LD_LIBRARY_PATH=$ORACLE_HOME/lib32 时,proc 失败并出现以下错误:

##ld.so.1:proc:致命:/opt/oracle/product/10.2.0.4/lib32/libclntsh.so.10.1:错误的 ELF 类:ELFCLASS32

感谢任何帮助。

【问题讨论】:

    标签: c oracle10g sparc compiler-options


    【解决方案1】:

    错误信息很清楚,您尝试将 32 位库与 64 位应用程序链接。您应该尝试使用LD_LIBRARY_PATH=$ORACLE_HOME/lib,因为那里放置了 64 位库。 Oracle 不使用 Solaris 的普通库方案(sparcv9 子目录的东西)。

    【讨论】:

    • 感谢您的及时回复。我正在尝试用 64 位 PRO C 创建一个 32 位可执行文件。我正在寻找不会让 PRO C 出现 ELF 错误的设置。
    • 那么这意味着你必须在32位模式下编译你的代码。默认情况下 gcc 和 Sunstudio 构建 32 位代码。在 gcc 和更新版本的 cc 上,您必须明确提供选项 -m64 以在 64 位中编译。
    • 简而言之,你的问题来自你的二进制文件,而不是 Oracle 库,因为它们是 32 位的,这就是消息所说的。
    • 好的,现在我明白了,你想运行一个 32 位的 proc 二进制文件。为什么?这没有任何意义。如果你想让你的二进制文件是 32 位还是 64 位,预处理器并不关心。性能上的差异可以忽略不计。这就是说,问题来自LD_LIBRARY_PATH,它将在库目录的正常查找之前被调用,并且oracle工具也会在其中找到它们的符号。您必须在 makefile 的链接器行以及运行应用程序时提供 lib32 路径,但不是在调用 proc 时。
    • 你去。我做了与您提到的相同的事情,并编译并构建了我的应用程序。感谢您的回复。另外,如果您知道,请告诉我是否有适用于 Solaris SPARC 的 Oracle 10g 32 位安装程序。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2012-10-02
    • 2015-04-19
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多