Интересно, может ли кто-нибудь помочь мне с проблемой, которая заставляет меня вытащить то, что осталось от моих волос...
В настоящее время я работаю над проектом, который требует, чтобы я разговаривал с базой данных 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
Я попытался заставить ключ -fpIC в make файле, но я получаю ту же ошибку.
Я просто недостаточно разбираюсь в компиляции пользовательских расширений PHP, чтобы помочь себе, и я надеюсь, что здесь есть гуру, который может указать мне в правильном направлении!
UPDATE: он отлично компилируется с использованием 32-разрядной установки Linux, поэтому не знаю, почему это происходит с 64-разрядной установкой...