试图为Rocket U2构建PHP PDO扩展

时间:2013-01-01 11:10:36

标签: php pdo u2 universe unidata

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

我目前正在开展一个项目,要求我与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位安装......

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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