ELF
に必要な.soが実行されていないことを知る簡単で効率的な方法がありますか? C/C++プログラム?linux/gcc:ldd C/C++プログラムの機能
ELF
を実行しないで、システムの(met/unmet)依存関係を調べることなく、ldd
と多少類似した機能を持つプログラムが必要です。おそらくライブラリを介してld-linux.soユーティリティに問い合わせるのでしょうか? (私は=のlinuxのこの部分では初心者です)
注:
ldd
のソースコードを読んで、私の意図のための非常に有用ではなかった:ldd
が、実際には別のプロセスをフォークし、プログラムを実行しているようです。それはプログラムがそれを実行せず、満たされていない依存関係を持っていることを知ることができない場合は
、少なくとも、すぐにすべての私のプログラム内からの.soのようELF
ために必要を一覧表示する方法はありますか?事前に
おかげで=)
lddユーティリティを起動してその出力を解析するだけではない理由がありますか? Linuxでは、このような手法が広く使われています。 – Juraj
私は自分のプログラム以外のものを実行するためにシェルを呼び出さないことを好むでしょう。さらに、フォークしたり、シェルを起動したりするのは非常に効率的ではありません。実行ファイルが試行錯誤で実行される場合は試してください。 、私はlddを呼び出すことは良い標準選択であると思われる。 – conejoroy
申し訳ありませんが、これは神話です。フォークは今日では高価ではありません。ほとんどのexec *()コールは、シェルを使ってバイナリを実行しません。今後のすべての呼び出しでfork()/ exec()オーバーヘッドと比較して、ld-linux内部をダイビングすることで、より多くの時間を奪うことは簡単に可能です。 – Juraj