実行中に検索エンジンを介して「Linux」、「」、およびldd <dynamic_lib>
「??? => ???
ldd
??? => ???
関連する可能性があります:問題の動的ライブラリは、組み込みのGCCスイートを使用してWindows 10のMSYS2でコンパイルされました。
ベストアンサー1
このldd
コマンドは、実行/使用時と同様に、実行可能ファイルまたはライブラリをシステムの共有ライブラリにリンクしようとします。与えられたファイルからライブラリ参照を読み、ファイルシステムとpath()で見つけようとしますLD_LIBRARY_PATH
。 「」と表示されている場合は、システムが???
一部のライブラリを見つけることができないことを意味します(そして、確認したプログラム/ライブラリが実行されていないか利用できない可能性があります)。
ライブラリの問題は、通常、あるシステムから別のシステムにファイル(実行可能ファイルまたは共有オブジェクトライブラリ)をコピーするときに発生します。その理由は、システムライブラリが異なるためです。たとえこれらのライブラリが他のバージョンのために存在していても。
時々、解決策は欠けているライブラリをコピーして置くことですLD_LIBRARY_PATH
。コピーしたライブラリファイルをシステムにインストールしたくないので、この目的のためにその変数を設定したり、新しいフォルダを追加することもできます(!)。
ldd
ソースシステムで実行して、コピーするライブラリを見つけることができます。
これが独自のプログラムであるか、または直接コンパイルした場合は、実際にどのライブラリが欠落しているかを確認できます。
ライブラリを識別したら、個人用フォルダにコピーすることができます(たとえば、にコピー)~/libs
。次に、このフォルダをライブラリパスに追加します。
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":~/libs
変数がすでに存在する場合(テストパスecho $LD_LIBRARY_PATH
)、または
export LD_LIBRARY_PATH=~/libs
そうでない場合(bash
シェル構文の2種類)。
それからldd
もう一度やり直してください。
後で変数を設定してからプログラムを起動するシェルスクリプトを使用して、いつでも実際のプログラムを起動できます。