web-dev-qa-db-ja.com

lddで表示される共有ライブラリのパスを変更するにはどうすればよいですか?

私は自分のシステムで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によって必要なパスに変更できるようにするにはどうすればよいですか?

5
AnkitSablok

ダイナミックリンカーであるld.soは、実行時にリンクする共有ライブラリを探すときに、PATHのような環境変数LD_LIBRARY_PATHを使用します。

LD_LIBRARY_PATHを、リンカーがライブラリを検索するディレクトリの:区切りのリストに設定できます。次に例を示します。

$ env LD_LIBRARY_PATH="$HOME/local/lib:/opt/other/lib" ./myprog

詳細については、システムのld.soマニュアルを参照してください。

5
Kusalananda