RIGHT:[[▲>../]]
短縮URL http://tinyurl.com/42wx4

#contents

*はじめに [#w1db470b]

手始めに、gba向けの環境を整えてみたいと思います。

*注意点 [#n08553e7]

-余計な環境変数は定義しない
CFLAGS, CXXFLAGS に -march とかつけない

*とりあえずコンパイル [#z8ff8dd4]
http://milky.way-nifty.com/nuzou/2003/12/cygwinarmgbazau.html
を参考にしたら、コンパイルはできたヽ( ´ー`)ノ

動くか試さないと……。

手元のサンプルプログラムでテスト。
コンパイルは通るけど動かない……ダメポ。

今度はこちらを参考に。
http://gba.imou.to/gcc.html
あら、コンパイルに失敗。うむむ。

こうなったらということで、後者のconfigureオプションを使って、前者の方法でビルド。
コンパイル成功!

サンプルも無事動作。

*コンパイル手順 [#w4ed454e]

作業ディレクトリを /work/gbagcc/ とする。
また、とりあえずのインストール先を /usr/local/arm-agb-elf/ とする。

+[[binutils-2.15>ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.15.tar.gz]], [[gcc-3.4.2>ftp://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.2/gcc-3.4.2.tar.bz2]], [[newlib-1.12.0>ftp://sources.redhat.com/pub/newlib/newlib-1.12.0.tar.gz]] をそれぞれ入手する。
 wget ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.15.tar.gz
 wget ftp://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.2/gcc-3.4.2.tar.bz2
 wget ftp://sources.redhat.com/pub/newlib/newlib-1.12.0.tar.gz
+それぞれを解凍する。
 tar xvfz binutils-2.15.tar.gz
 tar xvfj gcc-3.4.2.tar.bz2
 tar xvfz newlib-1.12.0.tar.gz
+http://gba.imou.to/gcc.html の[[パッチ>http://gba.imou.to/dists/patches-devgba/]]を当てる。
 wget http://gba.imou.to/dists/patches-devgba/patches-devgba-2004-07-15.tar.bz2
 tar xvfj patches-devgba-2004-07-15.tar.bz2
 patch -p0 < patches-devgba-2004-07-15/binutils-2.15.patch
 cd gcc-3.4.2/
 patch -p1 < ../patches-devgba-2004-07-15/gcc-3.4.1.patch
 cd ../
 patch -p0 < patches-devgba-2004-07-15/newlib-1.12.0.patch
+binutils を生成する。
最初、makeでflexなくてコケたのでcygwinのインストール時にいれとこうね。
 mkdir build; cd build
 mkdir bintuils; cd binutils
 ../../binutils-2.15/configure  --prefix=/usr/local/arm-agb-elf \
               --target=arm-agb-elf --disable-nls --with-cpu=arm7tdmi \
               --enable-targets=arm-elf,arm-coff,arm-aout
 make
 make install
+PATH を通しておく。
bashの場合
 export PATH=/usr/local/arm-agb-elf/bin:$PATH
+gcc を仮に生成する。
 cd ../; mkdir gcc; cd gcc
 ../../gcc-3.4.2/configure \
   --prefix=/usr/local/arm-agb-elf \
   --enable-languages=c,c++,ada \
   --target=arm-agb-elf \
   --disable-nls --with-cpu=arm7tdmi \
   --enable-targets=arm-elf,arm-coff,arm-aout --with-newlib \
   --enable-multilib --enable-interwork \
   --disable-threads --disable-shared
 make LANGUAGES=c all-gcc
 make LANGUAGES=c install-gcc
+newlib を生成する。
 cd ../; mkdir newlib; cd newlib
 ../../newlib-1.12.0/configure \
   --prefix=/usr/local/arm-agb-elf \
   --target=arm-agb-elf
 make
 make install
+gcc の残りを生成する。
 cd ../gcc
 make
 make install

でOKなはず。

*Cのサンプルを動かしてみる [#c1dacb2e]
ためしに
**適当なのを動かしてみる [#bd256631]

main.c:
 typedef unsigned char u8;
 typedef unsigned short u16;
 
 int main(void)
 {
 	u8 x,y;
 
 	u16* ScreenBuffer = (u16 *)0x6000000;
 	
 	*(u16 *)0x4000000 = 3 | 0x0400;
 	
 	for(x = 0; x !=240; x++){
 		for(y = 0; y !=160; y++){
 			ScreenBuffer[x + y * 240] = 30;
 		}
 	}
 	return 0;
 }

makefile:
 all: main.gba
 
 main.elf: main.c
         arm-agb-elf-gcc -o $@ $<
 
 main.gba:main.elf
         arm-agb-elf-objcopy -O binary $< $@

動いたー!!
----
-コンパイル手順の追加 -- [[TOBY]] &new{2004-04-15 (木) 05:41:52};
-binutils-2.15, gcc-3.4.2, patches-devgba-2004-07-15に対応 -- [[TOBY]] &new{2004-11-03 (水) 12:52:31};
-Adaはこけるね・・・だめぽ。 -- [[TOBY]] &new{2005-06-03 19:58:49 (金)};
- ubvfcrw wiaqux ygetnkl gpeyo vjydithfe ycxj cejzurgx -- [[jsznm axucf]] &new{2007-05-14 (月) 04:25:51};
- xnkmel srjtpoyc cjqzpnl hsuegkp zkhtfvdoq uorwds makxvwdt http://www.ziyrkhgqu.jzpum.com -- [[wsjrkmbe ctqlz]] &new{2007-05-14 (月) 04:26:03};

#comment

TIME:"2007-05-14 (月) 16:00:38" REFERER:"http://tobysoft.net/wiki/index.php?cmd=edit&amp;page=Cygwin%2F%A5%AF%A5%ED%A5%B9%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB%B4%C4%B6%AD%A4%CE%B9%BD%C3%DB" USER_AGENT:"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2)"
Front page   Edit Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes