编译没有根CentOS的geos



我一直在尝试在我的受限(无根)环境中编译geos,我遇到了一些困难…

我做了以下的

wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2
tar jxf geos-3.4.2.tar.bz2
cd geos-3.4.2
nano ~/.bash_profile
# I added PATH=$PATH:$HOME/local/bin export PATH
./configure --enable-php --prefix=$HOME/local/ && make clean && make

我得到以下错误

Making all in php
make[2]: Entering directory `/home/myname/test/geos-3.4.2/php'
Making all in .
make[3]: Entering directory `/home/myname/test/geos-3.4.2/php'
/bin/sh ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -I../include/geos   `/usr/local/bin/php-config --includes` -DCOMPILE_DL_GEOS -I../capi -I../include -I./opt/alt/php53/usr/include/ -pedantic -Wall -ansi -Wno-long-long  -ffloat-store -std=gnu99 -g -O2 -MT geos_la-geos.lo -MD -MP -MF .deps/geos_la-geos.Tpo -c -o geos_la-geos.lo `test -f 'geos.c' || echo './'`geos.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../include -I../include/geos -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DCOMPILE_DL_GEOS -I../capi -I../include -I./opt/alt/php53/usr/include/ -pedantic -Wall -ansi -Wno-long-long -ffloat-store -std=gnu99 -g -O2 -MT geos_la-geos.lo -MD -MP -MF .deps/geos_la-geos.Tpo -c geos.c  -fPIC -DPIC -o .libs/geos_la-geos.o
geos.c:26:17: error: php.h: No such file or directory
geos.c:27:54: error: ext/standard/info.h: No such file or directory
geos.c:28:72: error: Zend/zend_exceptions.h: No such file or directory

根据一些github, MAMP也会发生这种情况

发生这种情况是因为GEOS需要来自原始PHP源代码的PHP头文件,而MAMP不包括这些文件。

编辑1:

我还添加了这个~/local/share/config.site

CPPFLAGS=-I./opt/alt/php53/usr/include/
LDFLAGS=-L$HOME/local/lib

php.h位于这里:./opt/alt/php53/usr/include/php/main/php.h

info.h: ./opt/alt/php53/usr/include/php/ext/standard/info.h

zend_exceptions.h: ./opt/alt/php53/usr/include/php/Zend/zend_exceptions.h

编辑2:

最后一件事:我的./configure告诉我这个

checking for php-config... /usr/local/bin/php-config
checking for php... /usr/local/bin/php

所以我的问题,如果我在正确的轨道上解决这个问题,是我如何包括我的php头文件,而在centOs的非根环境中编译geos ?

我真的很失落!

我很确定你的PHP安装路径不.开始-不是从geos-3.4.2文件夹内,当然也不是从任意源文件夹内。
你应该让这个路径是绝对的。

我假设opt文件夹在您的用户文件夹中,因此完整路径将是$HOME/opt/alt/php53/usr/ .感谢您的澄清,完整路径应该是/opt/alt/php53/usr/
您需要将bin文件夹添加到PATH变量,将include文件夹添加到CPPFLAGS,将lib文件夹添加到LDFLAGS
对于$HOME/local/,这是不必要的,因为这是PREFIX,并且会自动添加。
还要注意,当向PATH变量添加内容时,应该将其添加到开头而不是末尾,这样它将优先于系统二进制文件。

我还建议您撤销对~/local/share/config.site所做的更改(或者删除文件,如果它不存在),因为那里的选项将影响所有基于auto - make的项目。
您应该将CPPFLAGSLDFLAGS作为参数传递给configure

在所有这些之后,您的命令块应该看起来像:
wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2
tar jxf geos-3.4.2.tar.bz2
cd geos-3.4.2
export PATH="/opt/alt/php53/usr/bin:$PATH"
./configure --enable-php --prefix="$HOME/local" CPPFLAGS="-I/opt/alt/php53/usr/include" LDFLAGS="/opt/alt/php53/usr/lib" && make clean && make

最新更新