当我尝试在Ubuntu 16.04下为PHP构建Saxon / C时,在运行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;


上面的错误消息是许多错误消息中的最后一条。

当编译器找不到jni.h文件时,将停止第一个make。我将头文件复制到文件夹中(可能是错误的吗?)

错误信息:

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

最佳答案

正如约翰提到的。添加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代码目录中。

关于php - 为PHP构建Saxon/C时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41251451/

10-11 21:21