我想知道有没有人能帮我解决一个让我把头发都拔出来的问题……
我目前正在从事一个项目,该项目需要我与Unidata数据库进行对话。PHP没有本机驱动程序来访问这种类型的数据库,但是,在Googling搜索之后,我发现了以下内容:
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位安装会失败...
发布于 2016-12-15 22:16:23
我知道我很久以前就问过这个问题,但我想出的最终解决方案是使用Rocket的.Net库和一些可以读取和处理来自UniData的数据的C#类,用PHP编写一个中间件。
如果有人对我是如何从PHP访问UniData的更多细节感兴趣,请随时给我写信。
发布于 2013-04-05 03:53:41
lib/libuvic.a需要用-fPIC重新编译,而不仅仅是试图链接到它的代码。从您的输出示例中,我无法判断您是否也使用-fPIC重新编译库。
https://stackoverflow.com/questions/14109906
复制相似问题