LiMo BBS System


日記更新一覧
Wiki トピック一覧
カレンダー
トピックリストビュー
タイトルツリービュー
ると's メタファビュー
ると's オーサービュー
携帯電話用ビュー
新規トピック記事の作成

最新記事表示数 [ 5/10/15/25/50/100 ]

表示トピック : LinkStation:CrossCompile

トピック表示解除

No.000353 - Wiki Edit -
Date : Sep.14.2003 19:33'30
Topic : LinkStation:CrossCompile

No.000352 LinkStation:CrossCompile
Date : Sep.14.2003 19:30'22
Edit history : Sep.15.2003 04:33'29
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 ディレクトリは不要になるので。

表示
修正
返信


LiMo BBS System - NewArticle
$Id: lmbbs.rhtml,v 1.17 2003/05/17 17:19:11 rero2 Exp $