« 湯俣川 2004年の思い出 | メイン | 新着情報 と今週の一言のページにブログシステムを採用 »

2004年12月25日
ブックマーク: このエントリをはてなブックマークに登録 このエントリーを含むはてなブックマーク Save This Page to del.icio.us この記事をクリップ! このエントリをニフティクリップに登録 このエントリをECナビ人気ニュースに登録 このエントリを BlogPeople Tags に登録 このエントリを BlogPeople Instant Bookmark に登録 PingKingポッケに追加  

クロス開発環境の構築 for RTLinux

クロス開発とは、プログラムを開発する環境と実行する環境が
異なる場合を云います。(同じ場合はセルフ開発)
開発する環境をホスト、実行する環境をターゲットと呼びます。
今回は、図のように、
・ホスト  :Window2000/XP インテル系CPU
・ターゲット:linux-2.4.20&RTLinux Pentium-M
の環境を構築します。
003.gif

本説明では、「cygwin$」をホスト側のシェルプロンプト、
「linux#」をターゲット側のシェルプロンプトとします。
開発環境の構築は次の4段階で行いました。

1.cygwinのインストール
  Window2000やXP上でUNIX環境を実現するツール
  をインストールします。

2.Linux用、includeとlibファイルの取得
  ターゲットマシンから、クロス開発に必要な、
  Linux用、includeとlibファイルを集め、
  ホストにインストールします。

3.RTLinux用、includeファイルの取得
  ターゲットマシンから、クロス開発に必要な、
  RTLinux用、includeファイルを集め、
  ホストにインストールします。

4.クロス開発環境(gcc)のインストール
  GNUの次のツールをcygwin上にインストールします。
   1) binutils-2.13.tar.gz
   2) gcc-3.2.2.tar.gz
   3) gcc-g++-3.2.2.tar.gz
  当初、
   1) binutils-20040725-2-src.tar.bz2
   2) gcc-core-3.4.1-1-src.tar.bz2
   3) gcc-g++-3.4.1-1-src.tar.bz2
  をインストールしましたが、RTLinuxのコードが旨く出来なかったので、
  上記バージョンを使いました。


1.cygwinのインストール
1.1. cygwinのsetup.exeを
  http://www.cygwin.com/setup.exe
  からダウンロード
  例えば、C:\tool\cygwin にダウンロードします。

1.2. setup.exeを実行
  http://pcweb.mycom.co.jp/special/2002/cygwin/
  の手順でインストール(次の点に注意)
   1) C:\cygwinをインストールディレクトリに指定。
    (説明の都合上、C:\cygwinとします。D:\cygwin
     などでも問題ありません。)
   2) ミラーサーバーを選ぶ。
     私は、ftp://ring.aist.go.jp にしました。
   3) "Devel"項目を、"Install" にする。
   4) Cygwinアイコンをディスクトップに作成にする。

   インストール完了で、Cygwinアイコンがディスクトップに
   作成されるが、ここではまだCygwinを開かない。

1.3. パソコンの環境変数を設定
  次の環境変数を設定します。
  CYGWIN ntsec smbntsec glob
  HOME /home/ishizumi
  MAKE_MODE UNIX
  SHELL /bin/bash

  Windows2000の場合次の手順で設定します。
   1) [マイコンピュータ]を右クリック
   2) [システムのプロパティ」を起動
   3) [詳細]タブをクリック
   4) [環境変数(E)]ボタンを押す
   5) XXXのユーザー環境変数に設定する

1.4. Cygwinを開く
  ディスクトップのCygwinアイコンをダブルクリックして
  Cygwinを開きます。
  1回目の操作で、/home/ishizumiディレクトリに次のファイルが作成されます。
  .bash_profile
  .bashrc
  .inputrc

1.5. cygwinの環境変数の設定
  C:\cygwin\home\ishizumi\.bashrcファイルに
  次の環境変数をセットします。
  (この変数は、2.以下の作業を行う上で必要)
  export host=i686-pc-cygwin
  export build=i686-pc-cygwin
  export target=i686-pc-linux-gnu
  export prefix=/usr/local/linux
  export src_root=/usr/local/src/gnu
  export PATH=$PATH:$prefix/bin

1.6. cygwinの起動
  ディスクトップに出来た、Cygwinアイコンをダブルクリック
  することで、Cygwinが起動します。
   cygwin$ ls
   cygwin$ pwd
  などと入力してみましょう。


2.Linux用、includeとlibファイルの取得とインストール
2.1. ターゲットマシンから Linux ランタイムを取得
  「RTLinux/Freeのインストール」の手順でインストールした
  Linux(ターゲット)側マシンからLinux用includeとlibファイルを
  取得します。(ホスト側からtelnetで操作するのが楽です。)

  以下の操作をLinux(ターゲット)側のroot権限で行います。
  ・includeファイルに関する作業
  linux# mkdir -p /tmp/linux-target-runtime
  linux# cd /tmp/linux-target-runtime
  linux# (cd /usr; tar cf - include) | tar xf -
  linux# ln -s include sys-include
  linux# (cd /usr; tar cf - lib) | tar xf -
  linux# (cd /; tar cf - lib) | tar xf -
  linux# cd /tmp/linux-target-runtime/include
  linux# rm linux asm (2005-03-03に 削除)
  linux# (cd /usr/src/linux/include; tar cf - linux asm-i386) | tar xf -
  linux# ln -s asm-i386 asm

  ・libファイルに関する作業
  linux# cd /tmp/linux-target-runtime
  linux# ls -F lib
  linux# vi lib/libc.so ←エディタによるファイル変更

   GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a )
       ↓
   GROUP ( /usr/local/linux/i686-pc-linux-gnu/lib/libc.so.6 /usr/local/linux/i686-pc-linux-gnu/lib/libc_nonshared.a )

  ・linux-target-runtime.tar.gzファイルの作成
  linux# cd /tmp/linux-target-runtime
  linux# tar -zcvf /tmp/linux-target-runtime.tar.gz .

  ・linux-target-runtime.tar.gzファイルの転送
  linux-target-runtime.tar.gzファイルをFTPなどを使用して、
  ホスト(cygwinマシン)の、C:\cygwin\tmpディレクトリに送ります。


2.2. ホスト側にインストール
  以下の操作をパソコン側でCygwinを起動して行います。
  cygwin$ mkdir -p $prefix/$target
  cygwin$ cd $prefix/$target
  cygwin$ tar zxvf /tmp/linux-target-runtime.tar.gz


3.RTLinux用、includeファイルの取得とインストール
3.1. ターゲットマシンから RTLinux用includeファイルの取得
  「RTLinux/Freeのインストール」の手順でインストールした
  Linux(ターゲット)側マシンからRTLinux用、includeファイルを
  取得します。

  以下の操作をLinux(ターゲット)側のroot権限で行います。
  linux# mkdir -p /tmp/rtlinux/linux-2.4.20
  linux# mkdir -p /tmp/rtlinux/rtlinux-3.2-pre3
  linux# cd /tmp/rtlinux/linux-2.4.20
  linux# (cd /usr/src/rtlinux/linux-2.4.20; tar cf - include) | tar xf -
  linux# cd /tmp/rtlinux/rtlinux-3.2-pre3
  linux# (cd /usr/src/rtlinux/rtlinux-3.2-pre3; tar cf - include) | tar xf -
  linux# cd /tmp/rtlinux/rtlinux-3.2-pre3
  linux# ln -s /usr/src/rtlinux/linux-2.4.20 linux

  ・rtlinux.tar.gzファイルの作成
  linux# cd /tmp/rtlinux
  linux# tar -zcvf /tmp/rtlinux.tar.gz .

  ・rtlinux.tar.gzファイルの転送
  rtlinux.tar.gzファイルをFTPなどを使用して、
  ホスト(cygwinマシン)の、C:\cygwin\tmpディレクトリに送ります。

3.2. ホスト側にインストール
  以下の操作をパソコン側でCygwinを起動して行います。
  cygwin$ mkdir -p /usr/src/rtlinux
  cygwin$ cd /usr/src/rtlinux
  cygwin$ tar zxvf /tmp/rtlinux.tar.gz .


4.クロス開発環境(gcc)のインストール
  ここでの操作は全てパソコン(ホスト)側で行います。
4.1. src_root ディレクトリの作成
  cygwin$ mkdir -p $src_root

4.2. gcc,g++とbinutilsの取得
  次のソースをC:\cygwin\tmpディレクトリにダウンロードする。
  http://ftp.gnu.org/pub/gnu/gcc/gcc-3.2.2/gcc-3.2.2.tar.gz
  http://ftp.gnu.org/pub/gnu/gcc/gcc-3.2.2/gcc-g++-3.2.2.tar.gz
  http://ftp.gnu.org/gnu/binutils/binutils-2.13.tar.gz

4.3. gccとbinutilsの解凍
  cygwin$ cd $src_root
  cygwin$ tar zxvf /tmp/gcc-3.2.2.tar.gz
  cygwin$ tar zxvf /tmp/gcc-g++-3.2.2.tar.gz
  cygwin$ tar zxvf /tmp/binutils-2.13.tar.gz

4.4. binutilsのビルドとインストール
  cygwin$ mkdir -p $src_root/BUILD/binutils
  cygwin$ cd $src_root/BUILD/binutils
  cygwin$ $src_root/binutils-2.13/configure \
--with-included-gettext \
--target=$target --host=$host --build=$build \
--prefix=$prefix -v
  cygwin$ make > make.log 2>&1
  cygwin$ make install > install.log 2>&1

  チェック
  cygwin$ $target-ld --version

4.5. bccのビルドとインストール
  cygwin$ mkdir -p $src_root/BUILD/gcc
  cygwin$ cd $src_root/BUILD/gcc
  cygwin$ $src_root/gcc-3.2.2/configure \
--enable-languages=c,c++ \
--with-included-gettext --enable-shared --enable-threads \
--target=$target --host=$host --build=$build \
--prefix=$prefix -v
  cygwin$ make > make.log 2>&1
  cygwin$ make install > install.log 2>&1

4.6. Linuxプログラムのコンパイルと実行
  cygwin$ mkdir -p /home/ishizumi/linux/sample
  cygwin$ cd /home/ishizumi/linux/sample
  このディレクトリに、hello.cプログラムを入れ、
  次のコマンドでコンパイルします。
  cygwin$ $target-gcc -o hello hello.c
   または、
  cygwin$ /usr/local/linux/bin/i686-pc-linux-gnu-gcc -o hello hello.c

  hello ファイルが出来るのでターゲットへダウンロード
  して実行する。
  linux# hello
   「Hello, world!」と表示されればOK

4.7. RTLinuxプログラムのコンパイルと実行
  cygwin$ mkdir -p /home/ishizumi/RTlinux/sample
  cygwin$ cd /home/ishizumi/RTlinux/sample
  このディレクトリに、
   1) hello.c
   2) Makefile
   3) rtl.mk
  を入れ、次のコマンドでコンパイルします。
  cygwin$ make

  hello.o ファイルが出来るのでターゲットへダウンロード
  して実行する。

  以下の操作をLinux(ターゲット)側のroot権限で行います。
  linux# tail -f /var/log/messages &
  linux# insmod hello.o
   「Hello, world!!」と表示されればOK
  linux# rmmod hello
   「bye bye」と表示されればOK


参考サイト
1) http://pcweb.mycom.co.jp/special/2002/cygwin/
2) http://www.sixnine.net/cygwin/translation/devel/cygwin-to-linux-cross-howto.html
3) http://ftp.gnu.org/
4)http://yama-tabi.net/blog/archives/2004/12/rtlinuxfree_1.html

 ←クリックしてもらうと嬉しいです。


投稿者 山旅人 : 2004年12月25日 08:34

トラックバック

このエントリーのトラックバックURL:
http://yama-tabi.net/cgi/mt/mt-tb.cgi/65

コメント

コメントしてください




保存しますか?


 
Copyright (C) 2004-2007 Shingo Ishizumi All Right Reserved (メール)       ここで一言