« 湯俣川 2004年の思い出 | メイン | 新着情報 と今週の一言のページにブログシステムを採用 »
2004年12月25日
クロス開発環境の構築 for RTLinux
クロス開発とは、プログラムを開発する環境と実行する環境が
異なる場合を云います。(同じ場合はセルフ開発)
開発する環境をホスト、実行する環境をターゲットと呼びます。
今回は、図のように、
・ホスト :Window2000/XP インテル系CPU
・ターゲット:linux-2.4.20&RTLinux Pentium-M
の環境を構築します。

本説明では、「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

