【问题标题】:Trying to build PHP PDO extension for Rocket U2尝试为 Rocket U2 构建 PHP PDO 扩展
【发布时间】:2012-12-16 02:28:48
【问题描述】:

我想知道是否有人可以帮助我解决一个让我把剩下的头发拔掉的问题......

我目前正在处理一个需要我与 Unidata 数据库对话的项目。 PHP 没有本地驱动程序来访问这种类型的数据库,但是,经过一番谷歌搜索后,我发现了以下内容:

https://u2devzone.rocketsoftware.com/accelerate/articles/u2-pdo-driver/u2-pdo-driver.

我有 U2 Intercall 标头和库,我认为我正确地包含了它们。但是,扩展程序编译但没有通过测试,因为它出错了

pdo_u2.so: undefined symbol: ic_universe_session in Unknown on line 0

这表明它没有与图书馆链接。当我编辑 makefile 并手动指定应该包含该库时,它会出错

relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/home/kaigoh/Downloads/intcall/lib/libuvic.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [pdo_u2.la] Error 1

我尝试在 makefile 中强制使用 -fPIC 开关,但我得到了同样的错误。

我只是不太了解编译自定义 PHP 扩展来帮助自己,我希望这里有一位大师可以为我指明正确的方向!

更新:使用 32 位安装的 Linux 可以完美编译,所以不知道为什么安装 64 位会失败...

【问题讨论】:

  • 可能是因为intercall的U2组件是32位编译的,所以不能用于64位。如果您有有效的支持合同,您的支持供应商可能会为您提供帮助。
  • 从您提供的错误消息看来,它也认为您正在尝试连接到 UniVerse,但是您已声明要连接到 UniData,因此您需要确保您的连接设置对 UniData 是正确的。我确实怀疑丹的评论是主要原因。
  • @kaigoh:下次您上网时,请在此处查看您的问题并添加从那时起发生的其他信息。还请查看 cmets 和答案,并为他们提供一些反馈。谢谢。

标签: php pdo u2 universe unidata


【解决方案1】:

我知道我很久以前就问过这个问题,但我想出的最终解决方案是用 Rocket 的 .Net 库以及一些可以读取和处理数据的 PHP 类用 C# 编写一个中间件来自 UniData。

如果有人对我如何从 PHP 访问 UniData 感兴趣,请随时给我留言。

【讨论】:

  • 我想更多地了解您是如何做到这一点的。如果您不介意,请通过 gmail 的 mike.roosa 给我发电子邮件。
【解决方案2】:

lib/libuvic.a 需要用 -fPIC 重新编译,而不仅仅是试图链接到它的代码。我无法从您的输出示例中判断您是否也使用 -fPIC 重新编译了库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2017-12-22
    • 1970-01-01
    相关资源
    最近更新 更多