2015-07-17 12 views
5

ich versucht haben, GEOS auf meinem restrcited (keine root) Umgebung zu kompilieren und ich einige Schwierigkeiten habe ...Kompilieren GEOS ohne root CentOS

Ich habe die folgende

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 

Und Im bekommen die folgenden Fehler

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 

nach einiger github, geschieht dies mit MAMP zu

Dies geschieht, weil GEOS PHP-Header-Dateien von der ursprünglichen PHP-Quelle benötigt und MAMP diese nicht enthält.

EDIT 1:

Ich habe dies auch hinzugefügt in ~/local/share/config.site

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

php.h befindet sich hier: ./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

EDIT 2:

Letzte Sache: mein configure sagt mir diese

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

Also meine Frage, wenn Im auf dem richtigen Weg dies zu lösen, ist, wie füge ich meine PHP-Header-Dateien während der Erstellung von Geos in einer Nicht-Root-Umgebung in CentOs?

Ich bin ziemlich verloren, um ehrlich zu sein!

+0

'PATH = '$ HOME/local/bin: $ PATH'' mit einfachen Anführungszeichen ein Fehler ist und die Dinge brechen. Zum Glück ist '~/.bash_rc' nicht die richtige Datei dafür, also hast du diese Bruchstelle nicht gesehen (aber wenn du '$ PATH'' zurückgibst, siehst du auch, dass deine Hinzufügung nicht funktioniert hat, außer es ist passiert schon da zu sein). Sie benötigen doppelte Anführungszeichen für die zu erweiternden Variablen. –

+0

Es war ein Fehler in meiner Erklärung, ich faktisch fügte dies in .bash_profile 'PATH = $ PFAD: $ HOME/local/bin Export PATH' – delmalki

+0

In einer Zeile, die ein Fehler ist, aber aus einem anderen Grund. In einer Zeile gilt diese Zuweisung nur für den 'Export'-Aufruf ... aber tatsächlich passiert das zufälligerweise genug, aber es ist immer noch nicht korrekt. Das sollte in zwei Zeilen sein. Wie auch immer, das hängt nicht mit deinem Problem zusammen. –

Antwort

1

Ich bin ziemlich sicher, dass der Pfad zu Ihrer PHP-Installation funktioniert nicht Start mit einem . - nicht aus dem Innern des geos-3.4.2 Ordner sowieso, und schon gar nicht aus dem Innern eines beliebigen Quellordner.
Sie sollten diesen Pfad absolut machen.

Ich nehme an, die opt Ordner ist in Ihrem Benutzerordner, so dass der vollständige Pfad wäre $HOME/opt/alt/php53/usr/. Danke für die Klarstellung, der volle Pfad sollte dann /opt/alt/php53/usr/ sein.
Sie müssen den bin Ordner zu Ihrer PATH Variablen, den include Ordner zu CPPFLAGS und den lib Ordner zu LDFLAGS hinzufügen.
Mit $HOME/local/ ist dies nicht notwendig, da das PREFIX ist, und wird automatisch hinzugefügt.
Beachten Sie auch, dass wenn Sie Zeug zu Ihrer PATH Variable hinzufügen, sollten Sie es zu dem Anfang anstelle des Endes hinzufügen, so dass es Vorrang vor Systembinärdateien hat.

Ich schlage vor, auch rückgängig machen Sie die Änderungen, die Sie ~/local/share/config.site gemacht (oder die Datei entfernen, wenn es nicht vorhanden war), als Optionen gibt alle auto-basierte Projekte auswirken.
Sie sollten lieber CPPFLAGS und LDFLAGS als Argumente an configure übergeben.

Nach alldem sollte Ihre Befehlsblock in etwa so aussehen:

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 
+0

Derzeit versuchen und kompilieren Sie Ihre Lösung. Das '.' wurde mit dem' find' Befehl gefunden. Und die PHP-Installation befindet sich im Root-Ordner und bedeutet '/ opt/alt/php53/user/bin'. Modifiziert Ihre Lösung in Konsequenz. Ich warte immer noch auf das Ende der Kompilation. Danke für die Köpfe. Und ja, ich habe die config.site basierend auf meiner Google-Recherche lol erstellt. Ich bin nicht verwendet Compiling Zeug – delmalki

+0

In Ordnung, aktualisiert meine Antwort. Nur fyi, Pfade, die mit '. /' Beginnen, sind relativ zum aktuellen Verzeichnis, also musst du sie neu berechnen, wenn du sie in einem anderen Verzeichnis verwendest - oder einfach absolut machen, da die meisten Build-Systeme nicht funktionieren relative Pfade sowieso. – Siguza