2009-05-13 8 views
2

64ビットマシンでDMDを使用してプログラムをコンパイルする最良の方法は何ですか? 64Bitコードにコンパイルする必要はありません。私はGDCについて知っていますが、D2と一緒に仕事したいと思っています。 chrootもありますが、もっと簡単な方法を望んでいます。64ビットLinuxでのDMDによるコンパイルまたは32ビットオブジェクトファイルとのリンク

実際の問題は、コンパイルではなくリンクすることです。 DMDはGCCを呼び出してシステムライブラリとのリンクを実行します。 DMDに32ビットライブラリとのGCCリンクを持たせることができますか?または私は手動でどうすればいいですか?

すでにia32ライブラリがインストールされているため、DMDを実行できます。

答えて

5

GCCに'-m32'フラグを渡して32ビットリンクを実行するように依頼してください。

DMDは、gccを呼び出してリンクを実行するのではなく、直接ldを呼び出します。同等のldスイッチは'-melf_i386'であり、明らかに、DMDがそのオプションをリンカーに渡す方法は'-L-melf_i386'フラグです。

多くのシステムがランタイムライブラリと開発ライブラリを分けていることに注意してください。 32ビットのランタイムパッケージはほとんどの場合デフォルトでインストールされますが、32ビットの開発パッケージはデフォルトではインストールされません。

開発 32ビットプログラムをビルドするための32ビットパッケージ。 32ビットのDMDを実行できるという事実は、32ビットプログラムをビルドするために必要なすべての32ビットライブラリがあることを証明するものではありません。

+0

ありがとうございます。そして答えを完成するために、開発に必要なパッケージはgcc-multilibです。また、私が使用したスイッチは-melf_i386で、dmdをgcc -L-melf_i386に転送しました。あなたはあなたの答えを更新できますか? –

関連する問題