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だから、ローダから書かないといけないのかぁ。