2012-07-28 4 views
6

Linux上でMinGWを使用してWindowsにクロスコンパイルしています。その作業を行うことは簡単でした。それを必要なDLLでパッケージ化することは、それほど単純ではありませんでした。現時点での解決策は、Windows上で実行可能ファイルを実行し、実際に実行されるまでDLLでコピーすることです。Linux上でWin exeに必要なDLLを見つける(mingwでクロスコンパイル)?

私のWindows .exeで必要とされるDLLを一覧表示するLinux用ツールはありますか? (lddとDependencyWalkerの組み合わせのようなもの)

+0

DependencyWalkerがあなたにとって不十分な理由は何ですか? exeで必要とされるすべてのDLLと、まだパスに見つからないDLLを一覧表示します。 – Pankaj

+0

DependencyWalkerはLinuxの実行可能ファイルではないので、十分ではありません。私は、DWがコンソールで実行できることを知りましたが、出力がビルドプロセスにフックできるかどうか調べる必要があります。いずれにしても、私はWineの下でDWをビルドプロセスの一部として実行することが絶対最後の手段であると考えています。 – Magnus

答えて

9

Windowsのバイナリ(lddやotoolなど)の動的依存関係のリストをサポートするツールチェーンユーティリティはありません。私のテストから

は、完全な依存関係リストは、通常のようなものを見ることができます。

strings MY.EXE | grep -i '\.dll$' 

ハックが、それは常に私のために働いています。

完全な例については、try this script私はLinux上の私のクロス環境で使用します。

+3

私はちょうどポータブル実行可能ファイル(PE)のデータ構造を適切に読み取って、実行可能ファイルの名前を取得する小さなプログラム( 'peldd')](https://github.com/gsauthof/pe-util)を作成しました。動的依存関係。これは、pe-parseライブラリを使用します。 'strings'メソッドは良い一次近似ですが、偽陽性を得るのは簡単です。 – maxschlepzig

+1

@ h0tw1r3、あなたのパイプラインはほぼ正しいです。 '。'を正しくエスケープするにはコマンドラインで、 '\'をエスケープする必要があります。そうでなければ、grepは '.dll $'をreとして表示します。 – jeff6times7

関連する問題