【发布时间】:2016-12-20 21:21:42
【问题描述】:
当我尝试在 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
【问题讨论】:
-
通常最好从第一条错误消息开始,而不是最后一条。我发现编译器无法找到头文件伴随着未声明的标识符错误一点也不奇怪,实际上,将头文件复制到项目文件夹中是一种处理问题的糟糕方法。相反,您应该将标头自己的文件夹添加到包含文件搜索路径中。你如何做到这一点因编译器而异,但为此目的使用
-I选项是命令行编译器相当普遍的约定。 -
感谢您的指点,约翰。我在上面的问题中添加了第一个错误