システム共有ライブラリを識別する方法は?

システム共有ライブラリを識別する方法は?

私のソフトウェアツールにはいくつかの外部依存関係があります。私はそれを次のように配布します。コンダプリコンパイルされた依存関係を持つ linux64 用パッケージ (共有ライブラリを含む) 残念ながら、ソフトウェア関連ライブラリでシステム ライブラリを識別する方法がわかりません。私はこのようなライブラリを配布するlibc必要はなく、避けるべきだと思います。他のLinuxディストリビューションには、一部のシステムライブラリの特定のバージョンがある可能性があるからです。

私は共有ライブラリをエクスポートするためにこの単純なオネライナーを使用しています(源泉):

$ ldd file | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /destination

たとえば、Tesseractソフトウェアの共有ライブラリは次のとおりです。

$ ldd tesseract.bin 
linux-vdso.so.1 =>  (0x00007ffff4bc7000)
libtesseract.so.4 => not found
liblept.so.5 => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f0ad8bf3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f0ad89dc000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0ad8615000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f0ad830a000)
/lib64/ld-linux-x86-64.so.2 (0x0000563cf6115000)

ご覧libtesseract.so.4のとおり、湾はliblept.so.5ソフトウェア関連のライブラリです(見つからないため見つかりませんLD_LIBRARY_PATH)。

それでは、システム共有ライブラリを識別する方法はありますか?にあることを確認できますが、/libこれは常に正しいですか?他の場所に置くことができないようにシステムライブラリだけがありますか?

ベストアンサー1

おすすめ記事