問題タブ [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 投票する
2 に答える
412 参照

linux - 動的ライブラリがアプリケーションに対してリンクされている理由を判断する方法は?

ソースからビルドしている Linux アプリがあります。バイナリに対して ldd を実行すると、ほとんどのライブラリは理解できますが、すべてではありません。

ld または gcc/g++ にフラグを追加する方法、またはリンカーが特定のライブラリに対してリンクすることを選択した理由を判断するためにできることはありますか?


編集:

@shloim が設定したルートを探索するために、次のことを試しました。

nmlibcrypto で動作しない明らかな理由はありますか?

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

qt - QPluginLoader: カスタム プラグイン (依存関係あり) が Qt にロードできない

QPluginLoader を使用して、Qt プラグイン フレームワークを使用して QT アプリケーションを構築しています。

プラグインをビルドしましたが、フレームワークがプラグインをロードできません。私のプラグインは、サードパーティの shlib (log4qt) に依存しています。

ファイルは正しく識別されますが、ファイルのロードは失敗します (これにより、すぐに依存関係の欠落が疑われました)。

shlib で ldd を実行すると、出力では、これが唯一の不足しているファイルです。

liblog4qt.so.1 => 見つかりません

問題を解決するために次のことを試しました。

  1. QApplication::addtLibraryPath("liblog4qt へのパス。*) の使用
  2. /etc/ld.conf を編集して、ライブラリの場所と更新されたキャッシュを手動で追加しました
  3. すべての liblog4qt* ファイルをプラグイン ディレクトリにコピーしました

上記のすべては、チョコレートの消防士と同じくらい役に立ちました.

これがプラグインをロードする方法です。ここには何も珍しいことはありません...

(関連部分の)コンソール出力は次のとおりです。

私のプラグインライブラリがロードされていない理由を誰か知っていますか?

[[追加情報]]

  • OS: Ubuntu 12.0.4 LTS
  • gcc: 4.6.3
  • QT: 4.8.1
  • QTクリエーター: 2.4.1
0 投票する
1 に答える
4509 参照

gcc - gcc はリンクをビルドしますが、ldd で共有ライブラリが表示されません

作成しなければならないプログラムがあります。プログラムは に依存しlibA、 にlibA依存しlibBます。両方のライブラリは同じフォルダーにありますが、ldd libA.so含まれていないlibB.soため、リンク中に追加する必要があります。

これは私のgccコマンドです:

gcc -L/path/to/libraries/lib -lA -lB -I/path/to/libraries/include main.cpp

プログラムはビルドおよびリンクされますが、起動しません。次のエラーが表示されます。

./a.out: シンボル検索エラー: /path/to/libraries/lib/libA.so: 未定義のシンボル: symbol_used_in_libA_but_defined_in_libB

私のバイナリに含まれていないことlddがわかります:libB.so

私はこれらの条件を持っています:

  • /path/to/libraries内側にありますLD_LIBRARY_PATH
  • 実行ldconfigは問題ありldconfig -pません。両方libA.soを見つけて、libB.so
  • gccコマンドで変更-lBするとリンカーエラーが発生するため、実行可能ファイル内でリンクしていなくても正しく検索-lBBされると思います。gcclibB.so

私が間違っていることは何ですか?実行可能ファイルを両方のライブラリにリンクするにはどうすればよいですか?

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

linux - ldd 出力の理解 - シンボリック リンク

通常、共有ライブラリには 2 つのシンボリック リンクがあります。

私のプログラムに、2 つのシンボリック リンクもある共有ライブラリをリンクします。

実行すると、次のようldd myprogramになります。

どういう意味ですか ?ldd が 2 番目のシンボリック リンクを表示するのはなぜですか? 実行すると、ライブラリがロードされたことを示すgrep assimp /proc/myprogrampid/mapsへのパスがlibassimp.so.3.1.1表示されますが、ldd 出力の形式がわかりません。

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

c - gcc リンカーは予期しない so を生成します (clang は問題ありません)

プログラムは clang では適切にリンクされていますが、gcc ではリンクされていません。

GCC では異なる結果が得られます (もちろん、共有ライブラリが壊れます)。

  • gcc バージョン 4.9.1 (Ubuntu 4.9.1-16ubuntu6)
  • Ubuntu clang バージョン 3.5.0-4ubuntu2 (tags/RELEASE_350/final) (LLVM 3.5.0 ベース)

リンカー オプションは同じです。ここで何が起こっているのですか?

完全なソースはこちらです。

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

x86 - 共有ライブラリを探すときに「ldd」が「見つかりません」と報告する

「engine.so」と「cengine.so」という 2 つの共有ライブラリがあります。「cengine.so」には「engine.so」への依存関係があり、「ldd」コマンドで確認できます。

http://puu.sh/gj0ZU/f4530c3c28.jpg

ただし、両方が同じディレクトリにあるにもかかわらず、ライブラリが見つからなかったと述べています! 検索ディレクトリを何らかの方法で手動で指定する必要がありますか?

さらに、「ld-linux-x86-x64.so.2」への依存関係があります。プログラムを 32 ビット アプリケーション (-m64 パラメーターなし) としてビルドしましたが、なぜ自動的に 64 ビット (だと思いますか?) ライブラリにリンクするのですか?

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

bash - リンクされたすべてのライブラリで md5sum を取得する

プログラムが突然起動しなくなり、エラーも何も発生しないという問題があります。コードとそのリンクされたライブラリの整合性を確保するために、(動的に) リンクされたすべてのライブラリの md5sum を比較したいと考えました。このフォーラムの他の投稿から、リンクされたすべてのライブラリを簡単にリストして、それらをうまく表示できることがわかりました。

ファイル名の横にチェックサムを含む列を追加するように、md5sum または sha1sum を追加するにはどうすればよいですか? md5sum を追加するだけでは、1行しか生成されず、仕事をしていないようです:

収量

md5sum を除外すると、リンクされたライブラリの適切なリストが生成されます。

どんなヒントでも大歓迎です!