Linux Progには24個のLibs Fails LDDがあり、straceはprogライブラリの読み込み中に692 "1 ENOENT"を表示します。

Linux Progには24個のLibs Fails LDDがあり、straceはprogライブラリの読み込み中に692 "1 ENOENT"を表示します。

私はprogの初期化の予想と希望の結果、特にソースコードのないプログラムのための共有ライブラリをロードするための入力を求めています。すべてのコードはRPMを介して渡されます。

  • 疑わしいプログラムは、両方のTCP接続で継続的なRevc-Qバッファリングを示します。 TCP接続のもう一方の端は大丈夫に見えます。疑わしいプログラムは、ほぼ連続的に1000~10000バイトをバッファリングし、ゼロになることはほとんどありません。疑わしいプログラムのホストでは、tcpActiveOpens.0 が 50,000 で、tcpAttemptFails.0 が 47,000 と表示されますが、どちらも絶えず増加しています。他の多くのTCP問題が発生する可能性があります。

  • 疑わしいプログラムでlddが実行されると、合計42個のライブラリが返されます。疑わしいプログラムの周りに strace ラッパーを置き、ldd で「見つかりません」とマークされたライブラリーだけでなく、すべてのライブラリーに多くの「-1 ENOENT」を記録します。最後に、すべてのライブラリが見つかり、疑わしいプログラムメモリにロードされます。一部の人々は成功する前に42個のENOENTを持っています。

  • 開発者に連絡して結果を通知し、彼らはlddを実行したときにプログラムの起動時に実行され、すべてのライブラリパスを設定する必要がある環境設定ファイルをインポートする必要があると確信していました。イノエントのレビューはありません。

Q:コードを完成させてコンパイルした後、それを確認するためにlddなどのツールを使用しますか? ldd が常に 0 を返さなければならないのか、一部または複数の「見つからない」を返すべきかが常に質問になるわけではありません。イノエントはどうですか?コードが正しくコンパイルされ実行されたら、エラーがあってはなりません。

答え1

ldd常にOKを返す必要があります。それ以外の場合、プログラムは実行されません。一方、動的リンカーが共有ライブラリを検索する場所を制御する方法があります。プログラムベンダーからの回答によれば、検索パスが満たされるようにプログラム環境を設定するための一種の起動スクリプトがすでに提供されていると仮定します。プログラムを期待どおりに実行しないと、エラーlddが報告される可能性が高くなります。

ENOENTライブラリ検索パスに複数のディレクトリが含まれている場合、これらのエラーは完全に正常です。動的リンカーは、要求されたファイルを開いて探しているものを見つけようとします。見つからない場合(「該当するファイルもディレクトリもありません」)、検索パスの次のディレクトリに移動し続けます。これは共有ライブラリだけでなく、他の種類のファイルにも当てはまります。たとえば、設定ファイルがオプションの場合、プログラムはエラーメッセージを無視して実行を続けます。

市。あなたの質問の新聞出会い系の広告スタイルが興味深いと思います。

関連情報