特定のバージョンをコンパイルしようとしています。地球観測システムそしてそのPHPバインディング内部にトラビス室環境; Ubuntuを使用しています。
私のインストールスクリプトは次のとおりです。
sudo apt-get update
sudo apt-get remove 'libgeos.*'
sudo apt-get autoremove
wget https://github.com/libgeos/libgeos/archive/$VERSION.tar.gz
tar zxf $VERSION.tar.gz
cd libgeos-$VERSION
./autogen.sh
./configure
make
sudo make install
cd ..
wget https://git.osgeo.org/gogs/geos/php-geos/archive/1.0.0rc1.tar.gz
tar zxf 1.0.0rc1.tar.gz
cd php-geos
./autogen.sh
./configure
make
mv modules/geos.so $(php-config --extension-dir)
cd ..
echo "extension=geos.so" > geos.ini
phpenv config-add geos.ini
すべてがうまくコンパイルされているようですが、PHPがGEOS拡張をロードしようとすると、次のメッセージが表示されます。
PHPの起動:動的ライブラリ '/home/travis/.phpenv/versions/5.6.28/lib/php/extensions/no-debug-zts-20131226/geos.so'を読み込めませんでした。 - libgeos_c.so.1:不可能な共有オブジェクトファイルを開く:「不明」行0に対応するファイルまたはディレクトリがありません。
私のコンピュータで次のコマンドを実行しました。
sudo find / -name 'libgeos_c.so*'
結果は次のとおりです。
/usr/local/lib/libgeos_c.so.1.9.0
/usr/local/lib/libgeos_c.so.1
/usr/local/lib/libgeos_c.so
/home/travis/build/brick/geo/libgeos-3.5.0/capi/.libs/libgeos_c.so.1.9.0T
/home/travis/build/brick/geo/libgeos-3.5.0/capi/.libs/libgeos_c.so.1.9.0
/home/travis/build/brick/geo/libgeos-3.5.0/capi/.libs/libgeos_c.so.1
/home/travis/build/brick/geo/libgeos-3.5.0/capi/.libs/libgeos_c.so
したがって、新しく構築されたGEOS PHP拡張機能が/usr/local/lib
。
この問題をどのように解決できますか?
ここにいるTravis CIにフルログイン。
答え1
で共有ライブラリを見つけるために拡張子を取得する方法が見つかりませんでしたが、/usr/local/lib
libgeosをからインストールする方法を見つけました/usr/lib
。
--prefix
libgeosをビルドするときに使用します。
./configure --prefix=/usr
答え2
最新バージョンでは、PHPバインディングは別々のプロジェクトになっているため、動的ライブラリを正しくロードするには、PHPモジュールのldconfig
後libgeos
または間でphp-geos
実行する必要があります。libgeos