問題タブ [ldd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
8528 参照

linker - 実行可能ファイルは動的にリンクされた mkl ライブラリを見つけることができませんが、ldd は見つけます

mkl ライブラリに動的にリンクされたコードがあります。コードを実行すると、mkl が見つからないと報告されます。

しかし、ldd を使用して実行可能ファイル内の動的にリンクされたライブラリをチェックすると、mkl ライブラリが見つかったことが示されます

何が間違っている可能性がありますか?

からの出力readelf -l ./bmdl

より多くのデバッグ

単独LD_DEBUG走行には影響ないよう./bmdlです。

bmdl古いものには「setgid」フラグがあり、新しいビルドにはそれがないことに気付きました。もしかしてそれが原因だった?

setgid私は古いものからビットを削除しましたがbmdl、実行./bmdl中はライブラリが見つからないことについて文句を言いません。問題は、なぜ setgid が動的にリンクされたライブラリを妨害できるのかということです。

動的にリンクされた実行可能ファイルを含む setgid がセキュリティ上の問題を引き起こす可能性があり、GNU glibc によって大幅に制限されていることがあります。たとえば、LD_LIBRARY_PATH は無視されます。たぶん、古いビルドはこれまで機能しなかったのでしょうか?!

0 投票する
2 に答える
26380 参照

binary - バイナリファイルを実行できません

ダウンロードしたアカデミック ソフトウェア パッケージの一部であるバイナリ実行可能ファイルがあります。実行できないようで、ソースコードにアクセスできません。私は次のことを試しました。何かご意見は?

どうもありがとう。

0 投票する
1 に答える
600 参照

c++ - C++: リンクされたライブラリが消え、実行中に segfault が発生する

ライブラリの構築に問題があります。Makefile で、 -ltclstub8.6 を追加して tclstub8.6 が必要であることを g++ に伝え g++ はそれを考慮します (これらのメッセージはフランス語で申し訳ありません)。

しかし、tcl 関数を呼び出すと、segfault が発生します。

実際、ldd -r コマンドでビルドしたばかりのライブラリを確認すると、tclstub8.6 を除くすべての外部ライブラリが含まれていることがわかります。

以下は、ldd -r コマンドの出力メッセージです。libtclstub8.6は表示されないことに注意してください。

そして、リストは libtclstub8.6 のすべての未定義シンボルで終わります。

誰かがこの問題について私を助けてくれますか? どうもありがとうございました!

0 投票する
1 に答える
7654 参照

linux - ldd ライブラリが見つかりません

プログラムを起動すると、次のエラーが表示されます。

共有ライブラリの読み込み中にエラーが発生しました: libnetcdf.so.6: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません

ポイントはlibnetcdf.so.6、ライブラリの古いバージョンです。削除して新しいバージョンを作成しました。

だからldd私が見ようとすると:

だけでなく、

なぜこの古いリファレンス? どうすれば解決できますか?

0 投票する
0 に答える
1193 参照

c - プラグイン内の未定義シンボルのリスト

通常、ライブラリ/アプリケーションを開発するとき、lddプログラムを使用して外部依存関係 (動的ライブラリにリンクされている) と未定義のシンボルをチェックできます。

そのため、この例には互換性のないバージョンのlibbar.soがインストールされているようで、bar_nullfn. libfoo.soこれは、ビルド フェーズ中にリンカがシンボルの欠落について既に不平を言うため、ビルドに使用されたマシンではめったに発生しません。

これは、実行時リンカーが次の情報に基づいてシンボルを解決できる (または解決できない) 限り、うまく機能します。libfoo.so

残念ながら、ホスト アプリケーションによって dlopen() される動的ライブラリであるpluginsを使用しています。これらのプラグインは、ホスト アプリケーションの関数 (ヘッダーを介して公開) を使用しますが、ホストのコンテキスト外では解決できません。当然のことながら、実行ldd -rすると大量の誤検出が発生します。

ホストがこれらのシンボル ( post、...) を提供するため、未定義のシンボルが非常に多いように見えても、プラグインを dlopen() することができます。

そのようなプラグインを構築できるようにするために、リンカは不足しているシンボルを無視するように明示的に指示されています。

今私の問題は、そのようなプラグインには実際に未定義のシンボルがあり、実行時に解決できない場合があることです。リンカはビルド中に不足しているシンボルを無視するように求められたため、警告は発行されません。しかし、プラグインがロードされると、dlopen()次のようなエラーで失敗します

ldd は私に与えます:

現在、それを修正する方法を知っている唯一の方法は、不足している各シンボルを繰り返し修正することです。たとえば、(存在しない) 関数psot()とを使用してプラグインで 2 つのタイプミスをした場合logpsot()、ホストを起動し、プラグインをロードし、シンボルを使用していることを発見しpsot、問題を修正し、再コンパイルし、ホスト/プラグインを再起動します。とも書いlogpsotた。

ldd(または同様の)シンボルを解決するために使用できる追加のバイナリオブジェクトを指定する方法があるかどうか疑問に思っていました。例えば

0 投票する
1 に答える
35128 参照

linux - ld-linux.so.2 と linux-gate.so.1 とは何ですか?

実行するldd programと、フォームの出力が得られます

出力と理由を説明し、他のエントリlinux-gate.so.1ld-linux.so.2は異なる方法で表示できますか? 彼らの役割は何ですか?