LinkStation:CrossCompile

過去の記録を閲覧用に保存しています。投稿・編集はできません。一部の旧記法・画像や HTML の表示は再現されていません。同名ページは候補から選択してください。

LinkStation 向けクロスコンパイル環境構築のためのメモ。



Debian GNU/Linux 3.0 上で作業したものだけれども IA32 ならばさほど変わらないものと思われます。



参考にしたところ


http://www.smalltown.ne.jp/~usata/memo/openblocks.shtml

http://www.angel.ne.jp/~tane/prog/win/howtobuildtools.html

http://www.kt.rim.or.jp/~nozawat/gcc.html

http://it-step.homeip.net/embeddedppc/test/



基本事項


ターゲットは powerpc-linux。

手順は、binutils→gcc(仮版)→newlib→glibc→newlib消し→glibc版gcc



binutils


>% ./configure --target=powerpc-linux --prefix=/usr/local/powerpc-linux

>% make

>% make install

>% export PATH="$PATH:/usr/local/powerpc-linux/bin"



newlib link


gcc のコンパイル時 newlib を使う様に gcc ディレクトリ内に newlib へのシンボリックリンクを張ります。

>% cd gcc-2.95.3

>% ln -s ../newlib-1.9.0/newlib/ .



gcc-core-2.95.3


初期環境構築時は C Compiler だけあれば良いので gcc-core を用います。

最初のコンパイルは newlib を使って動作する仮版の gcc で、その仮版は glibc をビルドするために作られます。

gcc-2.95.3 のソースディレクトリと同じ階層に作業用ビルドディレクトリを作りその中で作業します。

>% mkdir objgcc

>% cd objgcc

>% ../gcc-2.95.3/configure --target=powerpc-linux \

> --prefix=/usr/local/powerpc-linux --with-newlib

>% make

>% make install



newlib-1.9.0


> % mkdir objnewlib

> % ../newlib-1.9.0/configure --target=powerpc-linux \

> --prefix=/usr/local/powerpc-linux/

> % make

> % make install



glibc-2.2.3


2.2.3 は LinkStation のシステムで使われているバージョン。

glibc のビルドには Linux kernel が必要です。LinkStation で使われているカーネルと同じバージョンの Linux-2.4.17 を用意しておきます。

>% export LINUXSRC=(カーネルソースのディレクトリ)

>% AR=powerpc-linux-ar CC=powerpc-linux-gcc RANLIB=powerpc-linux-ranlib \

> ../glibc-2.2.3/configure --host=powerpc-linux \

> --prefix=/usr/local/powerpc-linux/ --with-headers=$LINUXSRC/include/ \

> --disable-sanity-checks

>% make gnu/lib-names.h

>% AR=powerpc-linux-ar CC=powerpc-linux-gcc RANLIB=powerpc-linux-ranlib \

> ../glibc-2.2.3/configure --host=powerpc-linux \

> --prefix=/usr/local/powerpc-linux/ --with-headers=$LINUXSRC/include/ \

> --enable-add-ons=linuxthreads --disable-sanity-checks --disable-profile

>% make

>% make install

>% cat */stubs > /usr/local/powerpc-linux/include/gnu/stubs.h

>% cp -r $LINUXSRC/include/linux /usr/local/powerpc-linux/include/

>% cp -r $LINUXSRC/include/asm-ppc /usr/local/powerpc-linux/include/

>% mv /usr/local/powerpc-linux/include/asm-ppc /usr/local/powerpc-linux/include/asm



glibc のインストール時 stdio.texi でエラーになる場合 "@ref{," とある場所(2個所)を "@ref{Top," に変更する。



newlib の削除


>% rm -rf /usr/local/powerpc-linux/powerpc-linux/lib

>% rm -rf /usr/local/powerpc-linux/powerpc-linux/include

>% ln -s /usr/local/powerpc-linux/lib \

> /usr/local/powerpc-linux/powerpc-linux/lib

>% ln -s /usr/local/powerpc-linux/include \

> /usr/local/powerpc-linux/powerpc-linux/include



gcc 再構築(glibc版)


>% mkdir objgcc

>% cd objgcc

>% ../gcc-2.95.3/configure --target=powerpc-linux \

> --prefix=/usr/local/powerpc-linux \

> --with-headers=/usr/local/powerpc-linux/include \

> --with-libs=/usr/local/powerpc-linux/lib

>% make

>% make install



おまけ、セルフコンパイル環境をクロスコンパイルする


>% expott SELFENV=(セルフコンパイルバイナリを置く場所)

>% ../binutils-2.14/configure --build=i686-pc-linux-gnu --host=powerpc-linux \

> --prefix=$SELFENV --enable-targets=powerpc-linux-elf \

> --enable-shared

>% ../gcc-core-2.95.3/configure --build=i686-pc-linux-gnu \

> --host=powerpc-linux --with-lib=/usr/local/powerpc-linux/lib \

> --with-include=/usr/local/powerpc-linux/include/ \

> --prefix=$SELFENV --enable-shared

作った後の環境は $SELFENV に置かれているものとして動作するので、LinkStation上に持っていったあと $SELFENV と同じディレクトリに入れるかシンボリックリンクを駆使して同等の環境を作る。

クロスコンパイル版セルフ開発環境がインストールできた後、できれば LinkStation 上で binutils と gcc をセルフコンパイルして問題ないバイナリを作った方が良いと思われる。そうすることで $SELFENV ディレクトリは不要になるので。