ARMのgcc環境を構築する

Chumbyの開発に使うgcc環境を整備する。
標準の開発環境は、
http://wiki.chumby.com/mediawiki/index.php/GNU_Toolchain
からダウンロードできるが、x86Linux専用。
http://omake.accense.com/wiki/ChumbyRebuildToolchain
とかちょっと期待したが結局もとのバイナリは同じ...

MacOSXWindowsでも開発できるようにしたいので、同バージョンを自前で用意する。
実際何が必要なのかよくわかってないが、とりあえずgccbinutilsをARMで用意してみましょう。
手順はTOPPERS/JSPgnu_install.txtを参考にしています。

binutils

http://ring.riken.jp/archives/GNU/binutils/binutils-2.18.tar.bz2

seiryu$ cd /Users/seiryu/Projects/Chumby/tools/ 
seiryu$ mkdir arm9_binutils
seiryu$ cd arm9_binutils
seiryu$ ../binutils-2.18/configure --prefix=/User/seiryu/Projects/Chumby/tools --target=arm-elf --disable-nls
seiryu$ make
seiryu$ sudo make install

gcc

seiryu$ cd gcc-4.1.2
seiryu$ ln -s ../newlib-1.16.0/newlib .
seiryu$ cd ..
seiryu$ mkdir arm9_gcc
seiryu$ cd arm9_gcc
seiryu$ ../gcc-4.1.2/configure --target=arm-elf --prefix=/User/seiryu/Projects/Chumby/tools/ --with-gnu-as --with-gnu-ld --with-newlib --with-headers=../newlib-1.16.0/newlib/libc/include
seiryu$ make CC='cc -no-cpp-precomp' CFLAGS="-O2 -fomit-frame-pointer" all
seiryu$ sudo make install

makeでエラーがでた。

make[3]: arm-elf-ar: Command not found
make[3]: *** [libgcc.a] Error 127
make[2]: *** [stmp-multilib] Error 2
make[1]: *** [all-gcc] Error 2
make: *** [all] Error 2

見出し

小見出し

小々見出し

C++言語

class non_multitask_test
{
	int* x_;
public:
	non_multitask_test()
		: x_(new int(12345))	// カーネル非動作状態でのnew演算子
	{
	}
	~non_multitask_test()
	{
		if (*x_== 12345)
			syslog(LOG_NOTICE,"non-multitask test succeeded");
		else
			syslog(LOG_NOTICE,"non-multitask test failed");
		delete x_;				// カーネル非動作状態でのdelete演算子
		x_ = 0;
	}
} test;

Objective-C言語

@implementation ClockWindow
- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)aStyle 	backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {

    NSWindow* result = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask 		backing:NSBackingStoreBuffered defer:NO];
    [result setBackgroundColor: [NSColor clearColor]];
    
    //フローティングウィンドウにする
    [result setLevel: NSFloatingWindowLevel];//NSStatusWindowLevel];
    [result setAlphaValue:1.0];
    [result setOpaque:NO];
    [result setHasShadow:NO];
    [result setHidesOnDeactivate:YES];
//    NSLog(@"ClockWindow:initWitContentRect");
    return result;
}