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

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

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

binutilsの構築

gccにはbinutilsが必要なので,先にbinutilsを構築する必要があります。

binutilsのコンパイル

クロスコンパイラと同じく,binutils-2.16.1.tar.bz2を以下のように展開します。

$ tar xvjf binutils-2.16.1.tar.bz2
$ cd binutils-2.16.1

以下のように構築をするフォルダを作成します。

$ mkdir build
$ cd build

configureでは,ターゲットとなる組込みボードのアーキテクチャと構築を行うPCのアーキテクチャの両方を指定する必要があります。PCのアーキテクチャはディストリビューションによって異なりますが,たとえばVine Linux 6.0では「i686-vine-gnu」というアーキテクチャになります。

その場合は以下のようにconfigureのオプションを指定し,コンパイルを実行します。

$ ../configure  --prefix=/usr --host=sh3-linux --build=i686-vine-gnu
$ make

binutilsのインストール

configureで指定したインストール先の/usrは組込みボードのフォルダなので,PC上では任意のフォルダを作成して,これをインストール先にします。

ここでは~/shlinuxとしますので,以下のようにインストールします。

$ mkdir ~/shlinux
$ make install prefix=~/shlinux

gccの構築

gccのコンパイル

クロスコンパイラと同じgcc-4.1.2.tar.bz2を以下のように展開します。

$ tar xvjf gcc-4.1.2.tar.bz2
$ cd gcc-4.1.2

以下のように構築をするフォルダを作成します。

$ mkdir build
$ cd build

binutilsと同じく,configureではターゲットとなる組込みボードのアーキテクチャと構築を行うPCのアーキテクチャの両方を指定する必要があります。また,構築する言語も指定しなければなりませんが,C言語とC++言語を指定します。

以下のようにconfigureのオプションを指定し,コンパイルを実行します。

$ ../configure  --prefix=/usr --host=sh3-linux --build=i686-vine-gnu --enable-languages=c,c++
$ make

コンパイルは成功したかのようにエラーも出ませんが,実はCコンパイラの構築には失敗しています。一番はCコンパイラの構築を成功させるようにgccを内部解析して改造することが望ましいですが,Cコンパイラの構築が失敗したとしても何とかなりますので,ここではこのまま強行突破します。

gccの不完全インストール

configureで指定したインストール先の/usrは組み込みボードのフォルダなので,PC上では先に構築したbinutilsのフォルダをインストール先にします。

$ make install prefix=~/shlinux

前述のとおりCコンパイラの構築が失敗しているので,インストールの途中で以下のようにエラーとなります。

/usr/bin/install: 宛先の `/home/general/shlinux/libexec/gcc/sh3-linux/4.1.2/install-tools/mkinstalldirs' はディレクトリではありません
/usr/bin/install: `build/fix-header' を stat できません: そのようなファイルやディレクトリはありません
make[2]: *** [install-mkheaders] Error 1
make[2]: Leaving directory `/home/general/gcc-4.1.2/build/gcc'
make[1]: *** [install-gcc] Error 2
make[1]: Leaving directory `/home/general/gcc-4.1.2/build'
make: *** [install] Error 2

何やらインストールでのトラブルのような感じがしますが,Cコンパイラそのものの構築に失敗していることがエラーの起因なので,対策はあきらめなければなりません。救いとしてC++コンパイラの構築には成功していますので,C++コンパイラは正常にインストールされています。

著者プロフィール

みついわゆきお

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

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

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

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

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