Daiyuu Nobori's SoftEther VPN Diary since 2004
トップページ
| 所属・経歴 |
活動・プロジェクト |
研究・開発
|
♪ 日記などへの特選リンク集 ♪
IKeJI さん |
Cedar さん |
Mayaqua さん |
thisjun さん
bakueikozo さん |
mugen さん |
分散計算の神林君 |
榮樂大先生 (hdk) |
吉田戦車 (ceekz) |
セキュリティの神・高木大先生 |
ron さん
AC の古澤さん |
AC の TAKAO 君 |
AC の NIES 君 |
AC の古橋君 |
AC な wakatono さん |
AC のいのひろ君
AC な三戸君 |
AC な柴田君 |
AC の小野君 |
AC すぎる松本君 |
AC な小西君 |
AC な google の及川さん |
AC な tomocha さん
偉大な研究室の先輩まつもとゆきひろ氏 |
板野先生の blog
|
新城先生の最近の fj への投稿 |
つくばあさひなあんてな | hatena 筑波大学 AC
リング
日記でよく出てくる「AC」(もともとは筑波大学用語) について詳しくは
ここ と
ここ をお読みください。
研究や仕事で、色々な OS / CPU 上のプログラムをコンパイルしてテスト実行することがよくあります。
たとえば OS では Linux / Solaris / FreeBSD / Mac OS X 等があり、CPU では x86, x86_64, SH4, MIPS, ARM, PowerPC, SPARC 等があります。
これらの OS には gcc 等のコンパイラが入っており、ssh で接続してソースコードを転送し make すれば、一応、コンパイルはできますが、組み込み機器などでハードディスクや CPU が非常に遅い場合は、少しのプログラムをコンパイルする場合でも数十分〜数時間かかってしまうことがあります。
このような場合は gcc をターゲットの OS / CPU に合わせてコンパイルすることによって、手元の高速な PC / ワークステーション上でターゲットの OS / CPU 用のプログラムを高速にコンパイルすることができるようになります。
たとえば手元に Windows XP がインストールされた PC があり、普段の日常生活やプログラミングには Windows を使用している場合で、ターゲットとなるコンピュータが CPU がとても遅い組み込み機器の場合は、手元の Windows XP 上でターゲットとなる機器用のコードを生成できる gcc を構築することによりその機器で動作するバイナリを直接吐き出すことができます。その機器で動くカーネルのコンパイルも可能です。
このような手法を「クロスコンパイル」と呼びます。
gcc を用いてクロスコンパイル環境を構築する方法は簡単です。
手元の PC が Linux や FreeBSD であれば当然可能ですが、Windows XP 等の場合でも cygwin を入れれば可能です。
cygwin を入れて適当なディレクトリを作成し、そのディレクトリにターゲットとなる機器からコピーしてきた /usr/include、/lib、/usr/lib 等を置きます。このディレクトリを prefix と呼びます。
gcc を構築するためにはまず cygwin 上で binutils を構築する必要があります。http://core.ring.gr.jp/pub/GNU/binutils/ 等からダウンロードしてきて、tar xzvf で展開します。
configure で --with-included-gettext --target=mipsel-pc-linux-gnu --host=i686-pc-cygwin --build=i686-pc-cygwin --prefix=/tmp/files/ 等と指定して Makefile を生成して make するだけです。すると、「target」で指定した CPU および OS 用のバイナリを扱える binutils を生成できます。
次に gcc を構築します。http://core.ring.gr.jp/pub/GNU/gcc/ 等からダウンロードしてきて同様に展開し、configure で --enable-languages=c,c++ --with-included-gettext --disable-libgomp --enable-shared --enable-threads=posix --target=mipsel-pc-linux-gnu --host=i686-pc-cygwin --build=i686-pc-cygwin --prefix=/tmp/files/ --with-mpfr=/usr/local/ -v 等と指定して make すると、gcc が構築できます。
gcc の構築には数時間かかる場合もあります。一旦、gcc が構築されれば、あとはいつでもその gcc を用いてターゲット機器用のバイナリファイルを生成することができます。
binutils や gcc の configure の中身を見てみればわかるのですが、以下のように指定するのが良いようです。
上記のように Windows 上に UNIX / Linux 用のコンパイル環境を構築することができるのと同様に、Linux 上等に Windows 用の EXE や DLL を生成する環境も構築可能です。
とおりすがり
2009/01/27 21:03
Cygwinも良いんですが、MinGW+msysでクロス開発環境を構築するとパフォーマンス的なオーバヘッドがなくて良いと思いますよ。CygwinだとPOSIX APIをフルエミュレートしてしまうので。
o-yaji
2009/01/28 00:21
もう”27日”終わりましたけど、、、。
<< | 2009/01 | >> | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
※ この Web サイトのコンテンツは 登 大遊 が個人的に運営しているものであり、ソフトイーサ株式会社や筑波大学内での立場として公式なコメントを掲載しているものではありません。一応コメントは投稿できるようにしていますが、個人的に運営している日記のため、自分が不快に思ったコメントは前触れ無く削除しております。ご了承ください。同様に会社に関するコメントなどについても、削除される可能性があります。コメント書き込み機能については、匿名の掲示板のような状態になることを予防するため、はてなユーザーからのみ受け付けるように設定することもあります。