64ビットLinux上でDMDしてコンパイルまたは32ビットのオブジェクトファイルとのリンク
質問
64ビットマシン上でDMDを使ってプログラムをコンパイルするための最良の方法は何ですか?これは、64ビットのコードにコンパイルする必要はありません。私はGDCについて知っているが、また、D2と仕事をしたいです。そこにchrootでもありますが、簡単な方法を望んでいます。
実際の問題は、コンパイルが、リンクではありません。 DMDは、システムライブラリとのリンクを実行するためにGCCに呼び出します。私は、DMDは、32ビットのライブラリに対するGCCのリンクを持って取得できますか?または私はそれを手動でどのように行うのでしょうか?
私はすでに、私はDMDを実行できる理由であるIA32ライブラリがインストールされています。
解決
これ'-m32'
フラグを渡すことによって、32ビットのリンクを行うためにGCCを確認して下さい。
DMD
がリンクを実行するためにgcc
を起動していないように見えるのではなく、直接ld
を起動します。同等のld
スイッチが'-melf_i386'
ある、と明らかにDMD
がリンカにそのオプションを渡すようにする方法は'-L-melf_i386'
フラグである。
多くのシステムは、ランタイムと開発ライブラリを分離することに注意してください。 32ビットランタイムパッケージは、ほとんどの場合、デフォルトでインストールされますが、32ビットの開発パッケージができない場合があります。
あなたが必要とするには、32ビットプログラムを構築するためにの開発の32ビットパッケージを。 32ビットDMD
が実行できるという事実は、それ自体では、あなたが32ビットプログラムを構築するために必要なすべての32ビット・ライブラリーを持っていることを証明していません。