hakeの日記

Windows環境でプログラミングの勉強をしています。

GCC4.2.1クロス開発環境

幾霜さんトコでcrosstoolを使ったクロス開発環境構築のエントリが書かれていたのでマネしてみました。構築環境は先日作成したVirtualPC上のDebianシンプル環境。とりあえず物凄く簡単でできてしまって驚いた。


以下、自分用メモ

シンプル環境で開発系が何も入って無いので予めインストール(実際には途中でエラーで止まった時点でインストールした)

  • apt-get install gcc
    • インストール時に提案されたパッケージも一緒にいれる(入れないとhello.cがコンパイルできなかった)
  • apt-get install bison
  • apt-get install flex

以下、crosstool用の作業

  • こちらからcrosstool-0.43入手して展開
  • 上のディレクトリにこちらの3個のファイルを上書き
  • FORTRANは使わないので、demo-arm-xscale.sh中のGCC_LANGUAGES="c,c++,f95"行からf95を削除
    • 多分設定ファイルのgccのバージョンを書き換えれば他のバージョンのクロス環境もできる?
    • インストール先の/opt/crosstoolも書き換えで変更可能
    • バイナリのprefixのarm-xscale-linux-gnuも、もっと短い方が良いかも
  • sh demo-arm-xscale.sh
    • gcc他各種ソースは~/downloadsへ、自動でダウンロードされる
    • 展開が済んでしまえば、--nounpackオプションを有効にしたほうが良い
    • i686-host_pc-linux-gnu-arが無いといわれるので、/usr/bin/arにシンボリックリンク
  • gcc2.95.3のコンパイル時にarm.cでエラーになるので、arm.cの530行目のarm_prog_modeをarm_prgmodeに書き換え
    • なんでgcc2.95.3のコンパイルが必要なのかがわからない
      • glibc2.2.2(ザウルスで使用してるもの)はgcc2でないとコンパイルできないと教えていただきました。
  • コンパイルが終わるまで、ひたすら待つ

実行環境、パスを通す

多分これで良いはず。スクリプトしておいて使うときだけパスを通します。

OPTLIB=/opt/crosstool/gcc-4.2.1-glibc-2.2.2/arm-xscale-linux-gnu/lib
OPTPATH=/opt/crosstool/gcc-4.2.1-glibc-2.2.2/arm-xscale-linux-gnu/bin

export PATH=$OPTPATH:$PATH
export LD_LIBRARY_PATH=$OPTLIB:$LD_LIBRARY_PATH

コンパイル

$ arm-xscale-linux-gnu-gcc hello.c

でできたバイナリがザウルスで動けばおっけー。(あ、この場合はlibgcc_s.so.1が必要になります)