今日の一言
2009/12/09(Wed) ものすごく面倒な宿題をクリア! [長年日記] 21:30現在晴 12℃
_ [雑記]マップス ネクストシート 第35話
ゲン&リプミラ懐かしすぎる!
黄金の船の出現で強さのインフレが生じたかと思いきや、やっぱりこの2人の方がすごいのね。
まあ、基本スペックだけ見てるとリプミラ号は一般的な伝承族にも負けてそうだからなぁ。初期はギタニモンにもやられてたし。
スパロボで例えると、機体的にはあまり強くないけど、回避性能だけが異様に高くて、搭乗者が「底力Lv9」&「ガッツ」持っている感じ?
<意訳>瀕死状態からが本番
それはそれとして。
ミュズの16倍発言から予想してたけど、やっぱりゲンが256倍出せるって設定出てきたか。
火事場の馬鹿力で4倍、伝承族の計算による真の潜在能力はそれの更に4倍、で、肉体と精神をシンクロさせた潜在能力はその16倍。すなわち、
4×4×16=256倍!
どんな計算だよ!けどこのノリが好きだ。
*キャプテンオーマイガーの「マジックビームはレベルをひとつ上げるごとに100倍の攻撃力になる」設定とか、最高だよね!?
いまから来月が楽しみだ。
_ [FC][Ubuntu][Linux][研究関係]クロスコンパイラの作成その1(ターゲット:h8 elf、ホスト:SunOS 5.10)
とある事情でクロス環境をいくつか構築した。
せっかくなので、そのやり方を以下にまとめる。
作業スペースを確保
$ mkdir gcc4_h8elf $ cd gcc4_h8elf
ソースをDL&解凍。
$ wget ftp://sources.redhat.com/pub/newlib/newlib-1.11.0.tar.gz $ wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.12.1.tar.bz2 $ wget ftp://ftp.gnu.org/gnu/gcc/gcc-3.3.2.tar.gz $ tar xvzf gcc-3.3.2.tar.gz $ tar xvzf newlib-1.11.0.tar.gz $ tar xvjf binutils-2.12.1.tar.bz2
binutilsのコンパイル
自分は展開場所を指定したが、デフォルトでいいなら--prefix=〜は不要。(これ以降も同様)
$ mkdir binutils-h8-elf $ cd binutils-h8-elf $ ../binutils-2.12.1/configure --target=h8300-elf --prefix=/home/akihiro-i/gcc4_h8elf/h8-elf $ gmake $ gmake install
コンパイルしたgccへのパスを通す&パスの確認
$ PATH=$PATH:/home/akihiro-i/gcc4_h8elf/h8-elf/bin/ $ export PATH $ echo $PATH
解凍したnewlibへのパスを通す
(念のため。多分不要)
$ PATH=$PATH:/home/akihiro-i/gcc4arm/newlib-1.11.0/newlib/libc/include/ $ export PATH $ echo $PATH
gccのコンパイル
$ cd ~/gcc4_h8elf/ $ mkdir gcc-h8-elf $ cd gcc-h8-elf $ ../gcc-3.3.2/configure\ --target=h8300-elf\ --enable-languages=c\ --with-newlib\ --with-headers=/home/akihiro-i/gcc4_h8elf/newlib-1.11.0/newlib/libc/include\ --prefix=/home/akihiro-i/gcc4_h8elf/h8-elf $ gmake $ gmake install
newlibのコンパイル
$ cd ~/gcc4_h8elf/ $ mkdir newlib-h8-elf $ cd newlib-h8-elf $ ../newlib-1.11.0/configure --target=h8300-elf --prefix=/home/akihiro-i/gcc4_h8elf/h8-elf $ gmake $ gmake install
これで完成!・・・のはず。
テスト
とりあえず
$ h8300-elf-gcc -v
で、出来ていることを確認できたら、実際に使ってみる。
コンパイル
$ h8300-elf-gcc hoge.c
アセンブリコードの生成
$ h8300-elf-gcc -S hoge.c -o org_hoge.s
逆アセンブル
$ h8300-elf-objdump -d a.out > inv_hoge.s
セクションヘッダ情報の確認
$ h8300-elf-objdump -h a.out > section_header.txt
_ [FC][Ubuntu][Linux][研究関係]クロスコンパイラの作成その2(ターゲット:h8 hms、ホスト:SunOS 5.10)
基本的にはh8 elf用と同じ。
作業場所の確保
$ mkdir gcc4_h8hms $ cd gcc4_h8hms
ソースのDL&解凍
$ wget ftp://sources.redhat.com/pub/newlib/newlib-1.11.0.tar.gz $ wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.12.1.tar.bz2 $ wget ftp://ftp.gnu.org/gnu/gcc/gcc-3.3.2.tar.gz $ tar xvzf gcc-3.3.2.tar.gz $ tar xvzf newlib-1.11.0.tar.gz $ tar xvjf binutils-2.12.1.tar.bz2
binutilsのコンパイル
自分は展開場所を指定したが、デフォルトでいいなら--prefix=〜は不要。(これ以降も同様)
$ mkdir binutils-h8-hms $ cd binutils-h8-hms $ ../binutils-2.12.1/configure --target=h8300-hms --prefix=/home/akihiro-i/gcc4_h8hms/h8 $ gmake $ gmake install
クロスコンパイラへのパス
$ PATH=$PATH:/home/akihiro-i/gcc4_h8hms/h8/bin/ $ export PATH $ echo $PATH
解凍したnewlibへのパス
$ PATH=$PATH:/home/akihiro-i/gcc4arm/newlib-1.11.0/newlib/libc/include/ $ export PATH $ echo $PATH
gccのコンパイル
$ cd ~/gcc4_h8hms/ $ mkdir gcc-h8-hms $ cd gcc-h8-hms $ ../gcc-3.3.2/configure\ --target=h8300-hms\ --enable-languages=c\ --with-newlib\ --with-headers=/home/akihiro-i/gcc4_h8hms/newlib-1.11.0/newlib/libc/include\ --prefix=/home/akihiro-i/gcc4_h8hms/h8 $ gmake $ gmake install
newlibのコンパイル
$ cd ~/gcc4_h8hms/ $ mkdir newlib-h8-hms $ cd newlib-h8-hms $ ../newlib-1.11.0/configure --target=h8300-hms --prefix=/home/akihiro-i/gcc4_h8hms/h8 $ gmake $ gmake install
これで完成!
テスト
とりあえず
$ h8300-hms-gcc -v
実行形式の作成
$ h8300-hms-gcc hoge.c
アセンブリコードの生成
$ h8300-hms-gcc -S hoge.c -o org_hoge.s
逆アセンブル
$ h8300-hms-objdump -d a.out > inv_hoge.s
セクションヘッダ情報
$ h8300-hms-objdump -h a.out > section_header.txt
なお、今回設定したパスはログアウト等をすれば切れてしまうので、恒常的に使いたい場合には、キチンと設定すること。
_ [FC][Ubuntu][Linux][研究関係]クロスコンパイラの作成その3(ターゲット:arm-linux、ホスト:Ubuntu 9.04 (x86) )
主にココ(http://www.belbel.or.jp/~belphegor/LinuxZaurus/process/cross.shtml)を参考に作成。
事前準備
$ export TARGET=arm-linux $ export ARCHIVE=~/gcc4arm-linux/archive $ export SOURCE=~/gcc4arm-linux/src $ export BUILD=~/gcc4arm-linux/build $ export TOOLS=~/gcc4arm-linux $ mkdir -p $ARCHIVE $SOURCE $BUILD $TOOLS/target
binutilsの作成
$ cd $ARCHIVE $ wget http://ftp.yz.yamagata-u.ac.jp/pub/GNU/binutils/binutils-2.13.2.tar.gz $ cd $SOURCE $ tar zxvf $ARCHIVE/binutils-2.13.2.tar.gz $ mkdir $BUILD/binutils $ cd $BUILD/binutils $ $SOURCE/binutils-2.13.2/configure --target=$TARGET --prefix=$TOOLS/$TARGET --enable-shared $ make $ make install $ PATH=$PATH:$TOOLS/$TARGET/bin $ export PATH
linux kernelのヘッダを準備
$ cd $ARCHIVE $ wget http://support.ezaurus.com/developer/source/a300/20021224/linux-sla300-20021224-rom1_20.tar.bz2 $ cd $SOURCE $ tar jxvf $ARCHIVE/linux-sla300-20021224-rom1_20.tar.bz2 $ cd linux $ make menuconfig ("load an Alternate Configuration File" を選んで "arch/arm/def-configs/discovery-MV" と入力して OK を押す) (あとはそのまま Exit で終了する。"Do you wish to save your new kernel configuration?" は Yes と答える) $ mv Makefile Makefile.bak $ sed "s/arm-linux-//g" < Makefile.bak | sed "s/SUBARCH = arm/# SUBARCH = arm/g" | sed "s/# SUBARCH :=/SUBARCH :=/g" > Makefile $ make dep (includeだけを用意する)
gccの作成(仮バージョン)
$ cd $ARCHIVE $ wget http://ftp.yz.yamagata-u.ac.jp/pub/GNU/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz $ cd $SOURCE $ tar zxvf $ARCHIVE/gcc-core-2.95.3.tar.gz $ mkdir $BUILD/gcc $ cd $BUILD/gcc $ mv $SOURCE/gcc-2.95.3/gcc/config/arm/t-linux $SOURCE/gcc-2.95.3/gcc/config/arm/t-linux.bak $ sed "s/TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC/TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D__gthr_posix_h/g" \ < $SOURCE/gcc-2.95.3/gcc/config/arm/t-linux.bak > $SOURCE/gcc-2.95.3/gcc/config/arm/t-linux $ $SOURCE/gcc-2.95.3/configure --target=$TARGET --prefix=$TOOLS/$TARGET --enable-shared --disable-threads $ ln -sf $SOURCE/linux/include/asm-arm $SOURCE/gcc-2.95.3/include/asm $ ln -sf $SOURCE/gcc-2.95.3/include/asm/proc-armv $SOURCE/gcc-2.95.3/include/asm/proc $ ln -sf $SOURCE/gcc-2.95.3/include/asm/arch-arc $SOURCE/gcc-2.95.3/include/asm/arch $ ln -sf $SOURCE/linux/include/linux $SOURCE/gcc-2.95.3/include/linux $ make $ make install
glibcの作成
$ cd $ARCHIVE $ wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.2.2.tar.gz $ wget http://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.2.2.tar.gz $ cd $SOURCE $ tar zxvf $ARCHIVE/glibc-2.2.2.tar.gz $ cd $SOURCE/glibc-2.2.2 $ tar zxvf $ARCHIVE/glibc-linuxthreads-2.2.2.tar.gz # ftp://ftp.linux.org.uk/pub/armlinux/toolchain/src-3.2/build-toolchainに書かれているパッチを適用 $ perl -pi -e 's/i386/arm*)\n\tlibc_cv_gcc_unwind_find_fde=yes\n\tarch_minimum_kernel=2.0.10\n\t;;\n i386/' sysdeps/unix/sysv/linux/configure $ perl -pi -e 's/weak_alias \(__old_sys_nerr/\/\/ $&/' sysdeps/unix/sysv/linux/arm/errlist.c $ mkdir $BUILD/glibc $ cd $BUILD/glibc $ CC=$TARGET-gcc AR=$TARGET-ar RANLIB=$TARGET-ranlib $SOURCE/glibc-2.2.2/configure --host=$TARGET --with-headers=$SOURCE/linux/include --enable-add-ons --prefix=$TOOLS/target/$TARGET makeinfo時にエラーになる部分の修正 $ mv $SOURCE/glibc-2.2.2/manual/stdio.texi $SOURCE/glibc-2.2.2/manual/stdio.texi.bak $ sed "s/@ref{,/@ref{Top,/" < $SOURCE/glibc-2.2.2/manual/stdio.texi.bak > $SOURCE/glibc-2.2.2/manual/stdio.texi $ make make時にエラーが出た場合、該当個所を削除すれば一応コンパイルできる。正常に動作するかどうかは不明。 $ make install
gccの作成(本バージョン)
$ rm -fR $BUILD/gcc $ mkdir $BUILD/gcc $ cd $BUILD/gcc t-linux を元に戻す $ rm $SOURCE/gcc-2.95.3/gcc/config/arm/t-linux $ mv $SOURCE/gcc-2.95.3/gcc/config/arm/t-linux.bak $SOURCE/gcc-2.95.3/gcc/config/arm/t-linux $ $SOURCE/gcc-2.95.3/configure --target=$TARGET --prefix=$TOOLS/$TARGET --enable-shared --with-headers=$TOOLS/target/$TARGET/include --with-libs=$TOOLS/target/$TARGET/ $ make $ make install
linux kernelのヘッダをインストール
$ cd $SOURCE $ rm -fR linux $ tar jxvf $ARCHIVE/linux-sla300-20021224-rom1_20.tar.bz2 $ cd linux $ make menuconfig ("load an Alternate Configuration File" を選んで "arch/arm/def-configs/discovery-MV" と入力して OK を押す) (あとはそのまま Exit で終了する。"Do you wish to save your new kernel configuration?" は Yes と答える) $ make dep $ cp -R include/linux $TOOLS/$TARGET/$TARGET/sys-include $ cp -R include/asm-arm $TOOLS/$TARGET/$TARGET/sys-include/asm $ cp -fR $TOOLS/target/$TARGET/include/* $TOOLS/$TARGET/$TARGET/sys-include $ rm -fR $TOOLS/target/$TARGET/include $ ln -sf $TOOLS/$TARGET/$TARGET/sys-include $TOOLS/target/$TARGET/include
ライブラリ群の整理
$ mv $TOOLS/$TARGET/$TARGET/lib/ldscripts $TOOLS/target/$TARGET/lib rmdir $TOOLS/$TARGET/$TARGET/lib $ ln -s $TOOLS/target/$TARGET/lib $TOOLS/$TARGET/$TARGET/lib
これで完成!
環境構築後の利用方法
新しくログインし直したときなどは以下のように再度環境変数を設定しなおす必要がある。
$ export TARGET=arm-linux $ export ARCHIVE=~/gcc4arm-linux/archive $ export SOURCE=~/gcc4arm-linux/src $ export BUILD=~/gcc4arm-linux/build $ export TOOLS=~/gcc4arm-linux $ PATH=$PATH:$TOOLS/$TARGET/bin $ export PATH
_ [FC][Ubuntu][Linux][研究関係]クロスコンパイラの作成その4(ターゲット:arm-elf、ホスト:Ubuntu 9.04 (x86) )
ホスト側のgccの切り替え
hostのgccが4.0系だとエラーを吐いたので、3.4に切り替える。
$ sudo apt-get install gcc-3.4 $ cd /usr/bin $ sudo rm gcc $ sudo ln -s gcc-3.4 gcc
これは別にalternativesを使ってもいい・・・はず。
作業場所の確保
$ mkdir gcc4_arm-elf $ cd gcc4_arm-elf
ソースのDL&解凍
$ wget ftp://sources.redhat.com/pub/newlib/newlib-1.11.0.tar.gz $ wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.12.1.tar.bz2 $ wget ftp://ftp.gnu.org/gnu/gcc/gcc-3.3.2.tar.gz $ tar xvjf binutils-2.12.1.tar.bz2 $ tar xvzf gcc-3.3.2.tar.gz $ tar xvzf newlib-1.11.0.tar.gz
binutilsのビルド&インストール
$ cd ~/gcc4arm-elf/ $ mkdir binutils-arm-elf $ cd binutils-arm-elf/ $ ../binutils-2.12.1/configure --with-included-gettext --enable-shared --target=arm-elf-elf --prefix=/home/akihiro-i/gcc4arm-elf/arm-elf
(閑話休題) *共有ライブラリを使いたい場合は、configure が作成したlibtoolファイルを書き換える必要がある?(configureがうまく動いていない?)
* allow_undefined_flag の値を supported にする。 * always_export_symbols の値を yes にする。
が、自分の環境ではこれをやっても共有ライブラリの作成が出来なかった。・・・なぜだ。もしかして元々対応していないとか?
(続き)
$ make $ make install
ビルドしたbinutilsへのパスを通す
$ PATH=$PATH:/home/akihiro-i/gcc4arm-elf/arm-elf/bin/ $ export PATH $ echo $PATH
解凍したnewlibへのパスを通す
$ PATH=$PATH:/home/akihiro-i/gcc4arm-elf/newlib-1.11.0/newlib/libc/include/ $ export PATH $ echo $PATH
gccのCコンパイラだけビルド&インストール
$ cd ~/gcc4arm-elf/ $ mkdir gcc-arm-elf $ cd gcc-arm-elf $ ../gcc-3.3.2/configure\ --enable-languages=c,c++\ --with-included-gettext\ --enable-shared\ --enable-threads\ --target=arm-elf-elf\ --with-newlib\ --with-headers=/home/akihiro-i/gcc4arm-elf/newlib-1.11.0/newlib/libc/include/\ --prefix=/home/akihiro-i/gcc4arm-elf/arm-elf $ make LANGUAGES=c all-gcc $ make LANGUAGES=c install-gcc
newlibのビルド&インストール
$ cd ~/gcc4arm-elf/ $ mkdir newlib-arm-elf $ cd newlib-arm-elf $ ../newlib-1.11.0/configure\ --target=arm-elf-elf\ --prefix=/home/akihiro-i/gcc4arm-elf/arm-elf\ --enable-shared $ make $ make install
パスを通す
$ PATH=$PATH:/home/akihiro-i/gcc4arm-elf/arm-elf/bin $ export PATH
gccの残りをビルド&インストール
$ cd ~/gcc4arm-elf/gcc-arm-elf $ make $ make install
これで完成!
テスト
実行形式をビルド
$ arm-elf-gcc hoge.c
確認
$ file a.out
結果
a.out: ELF 32-bit LSB executable, arm-elf, version 1, statically linked, not stripped