FrontPage
New
Index
SignIn
Edit
tmp/autoconf/クロスコンパイル
no archive mode
configure のオプション(--host, --build, --target) → http://d.hatena.ne.jp/maminus/20100129 わかりやすいってすばらしい。 ||--build|コンパイルPC ||--host|makeして作ったプログラムの実行環境 ||--target|クロス開発におけるターゲット環境 いっつも build と host が逆に思えてしまって間違えるのだよな、感覚的に…。((br)) まあ「ビルドマシン」みたいな言い方があることを考えたら自ずと host がその逆だと気づけそう。気づいてゆきたい。target はいかにもな名前で思わせぶりだけど(それこそクロスコンパイラ的なやつでもない限り)滅多に使わないようです…。 本家 autoconf マニュアルの該当部分→ [14.1 Specifying target triplets|http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html#Specifying-Target-Triplets] まあ、部分的におおまかにフィーリング無断翻訳すると… --- ほかに、ユーザーはコマンドライン引数でシステム名(system type)を configure に指定することもできます。これが必要になるのはクロスコンパイル時です。クロスコンパイルの最も複雑なケースでは3つのシステム名が必要とされます。 :--build=build-type ::パッケージを設定(configure)し、コンパイルするシステム名です。デフォルトでは config.guess の実行結果となります。host-type と異なる build-type を指定するとクロスコンパイルモードが有効になります。 :--host=host-type ::パッケージが動作するシステム名です。デフォルトではビルドマシンと同じです。build-type と異なる host-type を指定し、さらに build-type を(--build オプションで)明示的に指定するとクロスコンパイルモードが有効になります。 :--target=target-type ::パッケージ内のコンパイラツールがどのシステム向けにコード生成をするのかを指定するシステム名です。デフォルトでは host と同じです。 config.guess の判定結果を上書きしたい場合は --host ではなく --build を使います。 --host ではクロスコンパイルが有効になってしまうからです。 歴史的理由により、--host を指定する際は、とにかく必ず --build も指定してください(将来は修正されるはずです)。((br)) つまり、クロスコンパイルモードに入るには、以下のようなコマンドを使います。 <tt>./configure --build=i686-pc-linux-gnu --host=m68k-coff</tt> ちなみに --host を指定していないとき、指定したコンパイラの生成したコードが(ビルドマシン上で)実行できない場合は configure が失敗します。たとえば以下のような configure は(x86 Linux 上では)失敗します。 <tt>./configure CC=m68k-coff-gcc</tt>
Attachment
New: