私は自分のシステムでpostgis拡張機能を動作させようとしていますが、それは常に「$ libdir/postgis2.2」を吐き出し、そのようなファイルまたはディレクトリエラーは発生しません。私の好奇心のために、「ldd postgis-2.2.so」を実行すると、次の結果が出力されます。
linux-vdso.so.1 => (0x00007ffff3bc8000)
/usr/lib64/libjemalloc.so.1 (0x00002b3fe5ff4000)
libgeos_c.so.1 => not found
libproj.so.9 => not found
libjson-c.so.2 => not found
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00002b3fe6237000)
libm.so.6 => /lib64/libm.so.6 (0x00002b3fe659e000)
libc.so.6 => /lib64/libc.so.6 (0x00002b3fe689c000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b3fe6c41000)
/lib64/ld-linux-x86-64.so.2 (0x00002b3fe5b2e000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002b3fe6e5d000)
libz.so.1 => /lib64/libz.so.1 (0x00002b3fe7061000)
liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x00002b3fe7277000)
そして、多くの依存関係について、それらへのパスが存在しないことがわかります。これは、私がpostgisを構築するのではなく、必要なsoとlibsをコピーして手動で機能させるために起こっていると思います。しかし、postgisが必要とするファイルへのパスは知っています。依存関係の「見つかりません」をpostgisによって必要なパスに変更できるようにするにはどうすればよいですか?
ダイナミックリンカーであるld.so
は、実行時にリンクする共有ライブラリを探すときに、PATH
のような環境変数LD_LIBRARY_PATH
を使用します。
LD_LIBRARY_PATH
を、リンカーがライブラリを検索するディレクトリの:
区切りのリストに設定できます。次に例を示します。
$ env LD_LIBRARY_PATH="$HOME/local/lib:/opt/other/lib" ./myprog
詳細については、システムのld.so
マニュアルを参照してください。