2017-07-05 8 views
1

は、MySQLウェブサイトhereのページから次の段落に出くわした:exeが動的にコンパイルされることは何を意味しますか?

あなたは、CまたはC++(またはC 呼び出し規約を使用することができ、他の言語)でのプラグインを書くことができます。プラグインは動的にロードされ、アンロードされるため、 オペレーティングシステムが動的ロードをサポートしていなければなりません。 は動的に(静的ではなく)呼び出しアプリケーションをコンパイルする必要があります。 サーバプラグインの場合、これはmysqldを という動的ににコンパイルする必要があることを意味します。

ダイナミックコンパイルとは何ですか?私は力学的なリンクについて知っていますが、力学的なコンパイルの意味がわかりません。

また、Windows 10(x64)では、どのようにしてexeが動的にコンパイルされていることを保証できますか? dumpbinの出力からそれを調べることは可能ですか?

enter image description here

注:ここではmysqld.exeのためのDUMPBIN出力は(バージョン5.7)だ私は多くの情報を私に提供しませんでしたthis old questionを検討しました。それが示唆する依存ツールは、もはやWindows上にありません。

+1

おそらく、動的にリンクされたCRTと静的にリンクされたCRTのことです。 – drescherjm

+0

@drescherjmおそらく、それは私には起こりませんでした。ありがとうございました。 – Sabuncu

+0

@drescherjmたとえば、メモリがプラグインによって割り当てられた後にアプリケーションによって解放されたり、その逆の場合は、問題です。あなたがそのように境界を越えていなければ、静かにCRTにリンクするべきです*。 –

答えて

2

動的にコンパイルするということは、コンパイルされた出力が動的リンクに適しているように、コードをコンパイルしていることを意味します。

Windowsでは、DLLとして作成するプロセスは、DLLが常に動的にリンクされるため、動的リンクに適しているように、DLLをコンパイルする必要があります。

今日のほとんどのプラットフォームでは、は常にが動的にコンパイルされ、後で静的にリンクされていても再配置可能な出力が生成されると思います。

+0

ありがとうございます。 DLLではなく* exe *に対してこのプロパティを検出できますか? – Sabuncu

+1

私は100%確信していませんが、私は現代のWindowsプラットフォームは常に*動的にコンパイルすると信じています。つまり、現代のWindowsの実行可能ファイルは、別の実行可能ファイルによって動的にリンクされるのに適しています。つまり、別の実行可能ファイルによってDLLのように読み込むことができます。 –

+0

私が含まれている画面キャプチャでは、ファイルはexeですが、dumpbinはDLLの特性を報告します。それは単なる方法でも別のものでもありますか? – Sabuncu

関連する問題