vx32 on MacBook

手元のLinuxだとどうもうまく動いてくれないので、続いてMacBook (OSはTiger)で試してみる。binutils/gccはこれまたソースからビルドしてます。

$ wget http://pdos.csail.mit.edu/~baford/vm/release/binutils-2.18-vx32.tar.bz2
$ tar jxvf binutils-2.18-vx32.tar.bz2
$ cd binutils-2.18-vx32
$ ./configure --target=vx32
$ make -j 4
$ sudo make install

$ wget http://pdos.csail.mit.edu/~baford/vm/release/gcc-4.1.2-vx32.tar.bz2
$ tar jxvf gcc-4.1.2-vx32.tar.bz2
$ cd gcc-4.1.2-vx32
$ ./configure --enable-languages=c --disable-libssp --target=vx32
$ make -j 4
$ sudo make install

で、vx32 0.12をmakeしてみる。MakefragのVX32_CCなどは書き換えておく。
でも、vxrun/hello.cのコンパイルに失敗するなぁ。crt0.oが見つからないと言われる。

$ make vxrun/hello 
vx32-gcc -o vxrun/hello vxrun/hello.o libvxc/libc.a
/usr/local/lib/gcc/vx32/4.1.2/../../../../vx32/bin/ld: crt0.o: No such file: No such file or directory
collect2: ld returned 1 exit status
make: *** [vxrun/hello] Error 1

crt0.oはlibvxc以下でvx32用のものを作っているが、/usr/local/vx32/lib/にないと、vx32-ldは見つけてくれないよなということで、先に、

$ sudo make libvxc install

しておく。これでOKだった。

あれ、そういえばLinuxのときは何も問題なかったけど、何が違う?(Linuxの場合は通常のcrt0.oをリンクしてたのかな。)

Mac OS Xでも、vxlinuxモドキができないかなと思ったけど、OS XはELFじゃなくてMach-Oだから、ローダから書かないといけないのかぁ。