2015-07-17 35 views
5

ho cercato di compilare GEOS sul mio restrcited (radice) ambiente e sto avendo qualche difficoltà ...Compilazione GEOS senza CentOS radice

Ho fatto la seguente

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 

E Im ottenendo i seguenti errori

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 

Secondo alcuni github, questo accade con MAMP troppo

Ciò accade perché GEOS richiede i file di intestazione PHP dal sorgente PHP originale e MAMP non li include.

EDIT 1:

Ho anche aggiunto questo in ~/local/share/config.site

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

php.h si trova qui: ./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:

Ultima cosa: il mio ./configure mi dice che questo

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

Quindi la mia domanda, se Im sulla strada giusta per risolvere questo, è come faccio a inserire file header php durante la compilazione di geos in un ambiente non root in centOS?

Sono abbastanza perso per essere onesto!

+0

'PATH = '$ HOME/local/bin: $ PATH'' con apici è un errore e si romperà le cose. Fortunatamente, '~/.bash_rc' non è il file corretto per questo, quindi non hai visto quella rottura (ma se hai echo" $ PATH "' vedrai anche che la tua aggiunta non ha funzionato, a meno che non sia successo essere lì già). Hai bisogno di doppie virgolette sull'assegnazione per le variabili da espandere. –

+0

è stato un errore nella mia spiegazione, ho infatti aggiunto questo in .bash_profile 'PATH = $ PATH: $ HOME/local/bin export PATH' – delmalki

+0

Su una riga che è un errore anche se per un motivo diverso. Su una riga quell'assegnazione si applica solo alla chiamata 'export' ... ma in realtà ciò accade a coincidenza abbastanza ma non è ancora corretto. Questo dovrebbe essere su due righe. Ad ogni modo, questo non è in alcun modo collegato al tuo problema. –

risposta

1

Sono abbastanza certo il percorso di installazione di PHP non non inizio con un . - non dal all'interno della cartella geos-3.4.2 in ogni caso, e non certo da all'interno di una cartella di origine arbitraria.
Si dovrebbe rendere quel percorso assoluto.

Suppongo che la cartella opt sia nella cartella utente, quindi il percorso completo sarebbe $HOME/opt/alt/php53/usr/. Grazie per il chiarimento, il percorso completo dovrebbe essere /opt/alt/php53/usr/.
È necessario aggiungere la cartella bin alla variabile PATH, la cartella include a CPPFLAGS e la cartella lib a LDFLAGS.
Con $HOME/local/ non è necessario, poiché questo è PREFIX e verrà aggiunto automaticamente.
Si noti inoltre che quando si aggiungono elementi alla variabile PATH, è necessario aggiungerla allo all'inizio di anziché alla fine, in modo che abbia la precedenza sui file binari del sistema.

anche io suggerisco di annullare le modifiche apportate al ~/local/share/config.site (o rimuovere il file, se non esistesse), come opzioni ci interesseranno tutti progetti automake-based.
È preferibile passare CPPFLAGS e LDFLAGS come argomenti a configure.

Dopo tutto questo, il vostro blocco di comando dovrebbe assomigliare a:

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

Attualmente, prova e compila la tua soluzione. '.' è stato trovato usando il comando' find'. E l'installazione di php si trova nella cartella radice che significa '/ opt/alt/php53/user/bin'. Modificato la tua soluzione di conseguenza. Sto ancora aspettando la fine della compilation. Grazie per l'heads up però. E sì, ho creato il config.site basato sulla mia ricerca lol di Google. Non sono utilizzato per compilare materiale – delmalki

+0

OK, ho aggiornato la mia risposta. Solo fyi, i percorsi che iniziano con '. /' Sono relativi alla directory corrente, quindi devi ricalcolarli quando li usi in un'altra directory - o semplicemente renderli assoluti, poiché la maggior parte del sistema di compilazione (che ho incontrato) non può gestire percorsi relativi comunque. – Siguza