Подтвердить что ты не робот

Попытка построить расширение PHP PDO для Rocket U2

Интересно, может ли кто-нибудь помочь мне с проблемой, которая заставляет меня вытащить то, что осталось от моих волос...

В настоящее время я работаю над проектом, который требует, чтобы я разговаривал с базой данных 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-разрядной установкой...

4b9b3361

Ответ 1

Я знаю, что давно задал этот вопрос, но окончательным решением, которое я придумал, было написать часть промежуточного программного обеспечения на С# с библиотеками .Net из Rocket вместе с некоторыми классами PHP, которые могут читать и обрабатывать данные из UniData.

Если кто-то заинтересован более подробно в том, как я обращался к UniData с PHP, пожалуйста, напишите мне строку.

Ответ 2

lib/libuvic.a необходимо перекомпилировать с помощью -fPIC, а не только кода, который пытается связать его. Я не могу сказать из ваших выходных выборок, перекомпилировали ли вы библиотеку с -fPIC или нет.