問題タブ [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.
linux - ldd コマンドでリンクされたライブラリが表示されない
次のコマンドを使用して .so ファイルを作成しています。
.o ファイルの作成用
.so ファイルの作成用
ここで.soファイルを作成した後、lddコマンドを使用して.soファイルの依存関係を表示すると、次の出力が得られます
問題は、SDKTestSuite.so ファイルの作成中にライブラリ ファイル libsynthcam.so および libuusb.so ファイルを含めていることです。また、これらのカメラ名が ldd コマンドの出力に表示されないのはなぜですか。
これらのライブラリ ファイルを表示する ldd コマンドを作成するにはどうすればよいですか?
c++ - ld64.so が ldd に存在し、実行時に欠落している
私はいくつかのコードをコンパイルしていますが、さまざまな理由で静的に実行しています。私のUbuntu 12.04 / gcc 4.6.3マシンでは、コンパイルは正常に実行され、完全に静的です。
ここまでは順調ですね。しかし、gcc 4.5.3 を実行する別のマシン、Scientific Linux 5 システムでも実行する必要があります。何らかの理由で、ldd にはいくつかの動的ライブラリが残っています。
それ自体は問題ありません。コードは正常にコンパイルおよびリンクされ、ldd からわかるように、すべての依存関係が解決されています。ただし、SL マシンで実行しようとすると失敗します。
したがって、私が見る限り/lib/ld64.so.1 => /lib64/ld-linux-x86-64.so.2
、ldd が実行しても、何らかの理由で実行時にリンクが解決されません。もちろん、ルート アクセス権があるマシンでは、ld-linux-x84..blah から /lib/ld64.so.1 へのシンボリック リンクを作成することでこれを解決できますが、これはかなり単純な解決策であり、適用できません。それを私たちのクラスターに。全体を動的にコンパイルすると問題なく動作しますが、これは、回避したかった多数のマシンに対してコンパイルしているすべてのサードパーティ ライブラリをインストールすることを意味します。最後に、私がコンパイルするすべての依存関係は、別のプロジェクトでも使用され、cmake でコンパイルされます。その場合、問題はありません。ldd は実際に、呼び出しではなく /lib64/ld-linux...blah を直接リストします。 /lib/ld64.so に。
それで - なぜこれが起こっているのですか?コードをコンパイルしてリンクし、ldd しても問題ないのに、実行できないのはなぜですか? どんなアイデアでも大歓迎です!
clang - ldd の clang 類似物は何ですか?
実行可能ファイルが依存している DLL を確認するにはどうすればよいですか?
GNU 開発ツールチェーン ( gcc
&c) を使用するシステムでldd
は、そのために使用しclang
ますが、たとえば Mac OS X ( を持たない) などのシステムはどうでしょldd
うか?
ldd - 「ファイルが見つかりません」ではなく、完全な「ldd」パスの詳細を表示する方法は?
パスが存在しないときに ldd コマンドを実行すると、パスではなく「ファイルが見つかりません」というメッセージが表示されます。bash-3.2$ ldd curl libcurl.so.4 => /usr/local/lib/libcurl.so.4 libldap.so.5 => /usr/lib/libldap.so.5 librt.so.1 => / lib/librt.so.1 libssl.so.1.0.0 => (ファイルが見つかりません) libcrypto.so.1.0.0 => (ファイルが見つかりません)
見つからないファイルを確認するオプションはありますか? フルパス?
gcc - 動的ライブラリ (LD_LIBRARY_PATH なし) との「クリーンな」リンク?
タイトルはそれをかなり要約しています。別のライブラリをコンパイルするときに動的ライブラリをリンクしようとしています。これが私の(短くて謙虚な)メイクファイルです:
だから私は最初にlibsort.soを構築しています。それはうまくいきます。次に、libsort.so を使用する libkdtree.so をビルドしています。コンパイルもうまくいきますが、libkdtree.so は使用できません。libkdtree.so の ldd の出力は次のとおりです。
ディレクトリを LD_LIBRARY_PATH に追加すると機能し、リンクがあり、ライブラリを使用できます。LD_LIBRARY_PATH は本当にそのように変更するつもりですか? 他に選択肢はありませんか?私は自分のコードを他の人と共有するつもりです.私のコードを実行できるようにするためだけに.bashrcに何かを追加するように人々に依頼したくありません. ライブラリを手動でリンクすると思っていたので、 -L が何をするのか理解できないと思います。
誰かが私が見落としていた魔法の方法を教えてくれるか、それともきれいにリンクするという私の夢を打ち砕くことができますか?
ありがとうございました !
c++ - 不要な .so をリンクするソース コードの原因を迅速に特定するスクリプト
コンテキスト:ネットワーク経由で実行可能ファイルを転送するプログラムがあります。この実行可能ファイルは大きすぎるためldd -u bigFoo.so
、関連する共有オブジェクトで実行しました。これにより、ギグを占有していた未使用の共有オブジェクトファイルが多数あることが明らかになりました。
質問:foo.cc
にコンパイルされてリンクされているC++ ソース コードの一部bigFoo.so
と、unused.so
(によって明らかにされたldd -u
) にリンクされているC++ ソース コードが与えられた場合、 のリンクの原因となるbigFoo.so
呼び出しをすばやく特定できるスクリプトまたはシェル コマンドのシーケンスはありますか?foo.cc
unused.so