Ошибка при сборке Saxon/C для PHP

Когда я пытаюсь собрать Saxon/C для PHP под Ubuntu 16.04, я получаю кучу ошибок после выполнения команды make.

Это первая ошибка:

/bin/bash /usr/lib/Saxonica/Saxon-HEC/Saxon.C.API/libtool --mode=compile g++  -I
. -I/usr/lib/Saxonica/Saxon-HEC/Saxon.C.API -DPHP_ATOM_INC -I/usr/lib/Saxonica/S
axon-HEC/Saxon.C.API/include -I/usr/lib/Saxonica/Saxon-HEC/Saxon.C.API/main -I/u
sr/lib/Saxonica/Saxon-HEC/Saxon.C.API -I/usr/include/php/20151012 -I/usr/include
/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/
Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib  -
DHAVE_CONFIG_H  -g -O2   -c /usr/lib/Saxonica/Saxon-HEC/Saxon.C.API/php_saxon.cp
p -o php_saxon.lo 
libtool: compile:  g++ -I. -I/usr/lib/Saxonica/Saxon-HEC/Saxon.C.API -DPHP_ATOM_
INC -I/usr/lib/Saxonica/Saxon-HEC/Saxon.C.API/include -I/usr/lib/Saxonica/Saxon-
HEC/Saxon.C.API/main -I/usr/lib/Saxonica/Saxon-HEC/Saxon.C.API -I/usr/include/ph
p/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/
usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php
/20151012/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/lib/Saxonica/Saxon-HEC/Sax
on.C.API/php_saxon.cpp  -fPIC -DPIC -o .libs/php_saxon.o
/usr/lib/Saxonica/Saxon-HEC/Saxon.C.API/php_saxon.cpp:454:29: error: macro "RETURN_STRING" passed 2 arguments, but takes just 1

php_saxon.cpp:3297:40: error: ‘xdmAtomicValue_create_handler’ was not declared in this scope
 xdmAtomicValue_ce->create_object = xdmAtomicValue_create_handler;

Приведенные выше сообщения об ошибках являются последними из многих.

Первый make был остановлен, когда компилятор не нашел файл jni.h. Я скопировал заголовочный файл в папку (может быть не так?)

Сообщение об ошибке:

Saxon.C.API/SaxonProcessor.h:10:17: fatal error: jni.h: No such file or directory

Вторая попытка остановилась, когда компилятор не нашел файл jni_md.h - я снова скопировал файл в папку.

php_saxon.cpp:5:
./jni.h:45:20: fatal error: jni_md.h: No such file or directory

Любые указания о том, как построить это, приветствуются. Бьюсь об заклад, это мой недостаток знаний, а не фантастическое программное обеспечение.

Я следую указаниям на этой странице: http://www.saxonica.com/saxon-c/doc/html/index.html, и я также пытался использовать phpize5.6 и phpize7.0.


person Trond    schedule 20.12.2016    source источник
comment
Обычно лучше начинать с первого сообщения об ошибке, а не с последнего. Меня совсем не удивляет, что необъявленные ошибки идентификатора сопровождают компилятор, который не может найти заголовочный файл, и действительно, копирование заголовочного файла в папку проекта — плохой способ справиться с проблемой. Вместо этого вы должны добавить собственную папку заголовка к пути поиска включаемых файлов. То, как вы это делаете, зависит от компилятора к компилятору, но использование параметра -I для этой цели является довольно распространенным соглашением для компиляторов командной строки.   -  person John Bollinger    schedule 21.12.2016
comment
Спасибо за указание, Джон. Я добавил первую ошибку в вопросе выше   -  person Trond    schedule 21.12.2016


Ответы (1)


Как упоминал Джон. Добавление местоположения jni должно решить вашу проблему. Руководство по устранению неполадок должно помочь вам здесь. См.: http://www.saxonica.com/saxon-c/index.xml#troubleshooting У вас есть несколько вариантов:

1) Отредактируйте Makefile, включив в него jdkdir, например: -I$jdkdir/include -I$jdkdir/include/linux

2) Просто установите gcj-jdk, который я нашел, чтобы решить эту проблему.

3) Копирование файлов jni.h и jni_md.h в каталог кода Saxon/C, который я также обнаружил, работает.

person ond1    schedule 22.12.2016