SH3向けクロスコンパイラ構築の補足
最新版ディストリビューションでのエラー
前回はcrosstoolによるSH3向けクロスコンパイラ構築による構築について解説しましたが、最新のbinutilsを採用したディストリビューションでエラーが発生しますので、その対策について補足をします。
最近ではcrosstoolがメンテナンスされていないようなので、安定版ディストリビューションでは問題ないですが、最新版ディストリビューションでのエラーが発生することがあります。
原因は、glibc-2.3.6が想定したbinutilsのldとasのバージョンが2.1.xで2.2を想定していないという単純なミスマッチです。glibc-2.3.6のconfigureスクリプトでldとasの想定バージョンに2.2を追加すればいいだけなので、リスト1のパッチファイルをcrosstoolに追加すればいいだけです。パッチファイルの名称は任意で良いのでcrosstool内パッケージで、以下のフォルダにリスト1の内容のパッチファイルを追加します。
crosstoolその他の補足
crosstoolに必要なソースパッケージに関しては前回に解説しますが、ソースパッケージのネット上でのメンテナンスは日々刻刻と変化します。ソースパッケージの名称変更だけで対応できるケースもあり、それらは以下のとおりです。
GNU標準パッケージ
ソースパッケージのコンパイルについて
ソースコードのコンパイルは、基本的にはgccが動作する環境ならば可能です。
前回ではT-SH7706LSRボード上でgccでセルフコンパイルする環境を整備し、簡単なCソースコードをコンパイルしました。昔ならばそれでよかったのですが、現在では多くのソースパッケージが肥大化・複雑化しているので、GNU標準パッケージに準じたかたちで、configureコマンドでコンパイル環境のチェックやMakefileを環境に合わせて自動生成するようになっています。
前回の段階では、configureコマンドでコンパイル環境の自動生成ができないので、今回はそれをできるように整備をします。
何が必要か?
configureコマンドでコンパイル環境の自動生成をするには以下のパッケージを用意する必要があります。
- make-3.82
- libtool-2.4
- automake-1.11
- autoconf-2.68
- m4-1.4.15
ソースパッケージのコンパイルに関しては、configureコマンドでコンパイル環境の自動生成をする必要があり、「鶏と卵」の関係になるので、PC上でのクロスコンパイルによりT-SH7706LSR上でそれらを使えるようにします。
注意しなければいけない点として、上記のパッケージには他パッケージとの依存関係があるものも存在するので、T-SH7706LSRボード向けと同時にPC上のクロスコンパイラ環境の両方にインストールする必要があるパッケージもあるということがあります。
コンパイル作業をするためにGNUの各種ミラーサイトから上記ソースパッケージをダウンロードします。
コンパイル作業の実際
前回、gccセルフコンパイラのPC上でのインストール先は ~/shlinuxでしたので、引き続きこのフォルダをインストール先にして説明をします。
makeのクロスコンパイル
makeのコンパイルはPC上で行います。
PC上の任意の作業フォルダ上に以下のようにmakeのソースパッケージを展開します。
ソースパッケージを展開したら、以下のように作業フォルダを設定して、configureコマンドでMakefileを自動生成します。
Makefileが自動生成されたら、以下のようにコンパイルを行い、makeをインストールします。
libtoolのクロスコンパイル
libtoolのコンパイルもPC上で行います。
PC上の任意の作業フォルダ上に以下のようにlibtoolのソースパッケージを展開します。
ソースパッケージを展開したら、以下のように作業フォルダを設定して、configureコマンドでMakefileを自動生成します。
Makefileが自動生成されたら、以下のようにコンパイルを行い、makeをインストールします。
libtoolはクロスコンパイル環境に対してもインストールする必要がありますので、再度、configureコマンドでMakefileを自動生成します。
Makefileが自動生成されたら、以下のようにコンパイルを行い、makeをクロスコンパイル環境に対してインストールします。
automakeのクロスコンパイル
automakeのコンパイルもPC上で行います。
PC上の任意の作業フォルダ上に以下のようにautomakeのソースパッケージを展開します。
ソースパッケージを展開したら、以下のように作業フォルダを設定して、configureコマンドでMakefileを自動生成します。
Makefileが自動生成されたら、以下のようにコンパイルを行い、makeをインストールします。
automakeはクロスコンパイル環境に対してもインストールする必要がありますので、再度、configureコマンドでMakefileを自動生成します。
Makefileが自動生成されたら、以下のようにコンパイルを行い、makeをクロスコンパイル環境に対してインストールします。
autoconfのクロスコンパイル
autoconfのコンパイル、これもPC上で行います。
PC上の任意の作業フォルダ上に以下のようにautoconfのソースパッケージを展開します。
ソースパッケージを展開したら、以下のように作業フォルダを設定して、configureコマンドでMakefileを自動生成します。
Makefileが自動生成されたら、以下のようにコンパイルを行い、autoconfをインストールします。
m4のクロスコンパイル
m4のコンパイルもPC上で行います。
PC上の任意の作業フォルダ上に以下のようにm4のソースパッケージを展開します。
ソースパッケージを展開したら、以下のように作業フォルダを設定して、configureコマンドでMakefileを自動生成します。
Makefileが自動生成されたら、以下のようにコンパイルを行い、m4をインストールします。
GNU標準パッケージのセルフコンパイル
セルフコンパイル
libtoolを例に、GNU標準パッケージのコンパイルをT-SH7706LSR上で行う方法を紹介します。
T-SH7706LSRボード上でのconfigureコマンド実行やコンパイルは時間がかかるので忍耐強く待ちます。T-SH7706LSRボード上の任意の作業フォルダ上に以下のようにlibtoolのソースパッケージを展開します。
ソースパッケージを展開したら、以下のように作業フォルダを設定して、configureコマンドでMakefileを自動生成します。
Makefileが自動生成されたら、以下のようにコンパイルを行い、bisonをインストールします。
次回は
次回はT-SH7706LSRボード上にSH3アーキテクチャーのrpmパッケージのインストールについて解説します。