体験!マイコンボードで組込みLinux

第15回 マイコンボードで動くgcc環境の移植

この記事を読むのに必要な時間:およそ 4.5 分

インストール内容の完成

不完全インストールの補完

組み込み用のSH3セルフコンパイラは,最終的には組み込みボードの/usrにインストールされますが,PC上では ~/shlinuxにインストールしています。

この段階では不完全インストールの状態なので,インストールの補完をしなけばなりません。問題はどこから補完するかということですが,先にインストールしたクロスコンパイラの内容の一部の持ってきて補完をします。

不完全なセルフコンパイラを補完するためにクロスコンパイラの内容の一部の持ってきて補完をする条件としては,両者の元となるソースパッケージが一致していなければなりません。そのため,今回はgccのコンパイル失敗を見越して,わざわざクロスコンパイラを新規生成したわけです。

ヘッダファイルの補完

Cコンパイラの構築に失敗しているので,Cコンパイラによるコンパイルで必要となるヘッダファイルがインストールされていません。そのため,以下のようにクロスコンパイラからヘッダファイルを持ってきます。

$ cd ~/shlinux
$ cp -a /usr/sh3-linux/sh3-linux/include .

gccライブラリの補完

Cコンパイラの構築に失敗しているので,Cコンパイラによるコンパイルで必要となるgccライブラリがインストールされていません。以下のようにクロスコンパイラからgccライブラリを持ってきます。

$ cd ~/shlinux/lib/gcc/sh3-linux/4.1.2
$ cp -a /usr/sh3-linux/lib/gcc/sh3-linux/4.1.2/lib*.a .

Cライブラリの補完

本来はglibc-2.3.6を構築すべきところですが,Cコンパイラの構築に失敗している状態なので,今回はクロスコンパイラからCライブラリを持ってきます。以下のようにコピーします。

$ cd ~/shlinux/lib
$ cp -a /usr/sh3-linux/sh3-linux/lib/*crt* .
$ cp -a /usr/sh3-linux/sh3-linux/lib/ld*so* .
$ cp -a /usr/sh3-linux/sh3-linux/lib/lib*.a .
$ cp -a /usr/sh3-linux/sh3-linux/lib/lib*so* .

その他の補完

C++コンパイラではC++言語ソースのコンパイルだけでなくC言語ソースのコンパイルもできるようにCコンパイラを兼ねています。前述のとおりC++コンパイラの構築には成功しているので,以下のようにソフトリンクによりC++コンパイラをCコンパイラに見せかけるようにします。

$ cd ~/shlinux/bin
$ ln -s c++ cc
$ ln -s g++ gcc
$ ln -s sh3-linux-c++ sh3-linux-cc
$ ln -s sh3-linux-g++ sh3-linux-gcc

SH7706ボードへのインストール

ルートファイルシステム再構築

SH7706ボードではルートファイルがSDカード上にあり,とりあえず,従来とおりにルートファイルシステムを構築します。今回はCコンパイラとCライブラリのバージョンが変更になったので,できれば,LinuxカーネルとBusyBoxは新しいクロスコンパイラで再構築することをお勧めします。

従来とおりにルートファイルシステムでの/lib以下のファイル群は古いクロスコンパイラ由来のファイルなので,/libフォルダをフォルダごと削除します。

そして,PC上の~/shlinux以下のファイルはルートファイルシステムの/usr以下にあるべきなので,それらを丸ごと/usr以下にコピーします。

ただ,その状態ではLinuxが起動しないので,SDカード上のルートファイルシステムに対し,改めてBusyBoxを上書きインストールしなければなりません。

セルフコンパイルの実行

ルートファイルシステム再構築されたSDカードをSH7706ボードに差し込んでからSH7706ボードからLinuxを起動します。

たとえば,hello.cというファイル名をつけたリスト4のソースファイルだと,以下のようにコンパイルします。

# gcc -o hello hello.c
# ./hello
hello C
#

リスト4 hello.c

#include <stdio.h>

int main() {
	printf("hello C\n");
}

コンパイルや実行では初回はやや時間がかかりますが,2回目以降はキャッシュが効くので反応は早くなります。

次回は

次回はGNUの標準パッケージをSH3セルフコンパイルするために整備をします。

著者プロフィール

みついわゆきお

1986年日立製作所入所,その3年後に自社ワークステーションでの開発業務をきっかけにBSDを経てLinux利用を始める。

1991年日立を退社し,その後,ボランティアでLinux関連ツールの整備と開発しながらWindows否定運動およびLinux普及運動を開始し,Linuxディストリビューション草創期にはPlamoLinuxのメンテナンスにもかかわる。

2001年ごろより非営利ベースでボードコンピュータの開発を開始し,やがて,無償によりハードとソフトを開発したH8マイコンボードの販売を秋月電子にて開始した。

現在,ボードコンピュータ用基本ソフトMES2.5や,SHプロセッサ向けLinuxパッチおよびTOPPERS/JSPパッチを無償で一般に提供しながら,ティーエーシーやエムイーシステムより原価率100%を目標(ただし,販売店の営業・販売費用や開発・製造の際の差損を除く)としたSuperHボードコンピュータを販売中。

また,現在でも頑固にMS社否定及びWindows撲滅運動に邁進中。