Open5
WasmLinux: BusyBoxを起動してみる
とりあえず起動してみて、足りないところを何とかしてみる感じにしよう。
libmを抜かないとビルドできなかった
ダミーのlibmを用意するとかしないとダメだな。。とりあえずMakefile側でワークアラウンドしておく。。
あとビルド用のコマンドラインをすっかり忘れていた。。
$ make AR=/home/oku/repos/linux/_warp/bin/warp-ar CC=/home/oku/repos/linux/_warp/bin/warp-hosted-cc
warp-hosted-cc
はfreestandingじゃないcc。
setjmp
longjmp
に依存している
あ、そっかぁ。。
/usr/bin/ld: CMakeFiles/runner.dir/home/oku/repos/linux/_hostwasm/user.c.o: in function `w2c_user_test_main':
/home/oku/repos/linux/_hostwasm/user.c:114023: undefined reference to `w2c_env_setjmp'
/usr/bin/ld: CMakeFiles/runner.dir/home/oku/repos/linux/_hostwasm/user.c.o: in function `w2c_user_binop':
/home/oku/repos/linux/_hostwasm/user.c:115987: undefined reference to `w2c_env_longjmp'
/usr/bin/ld: CMakeFiles/runner.dir/home/oku/repos/linux/_hostwasm/user.c.o: in function `w2c_user_syntax':
/home/oku/repos/linux/_hostwasm/user.c:116862: undefined reference to `w2c_env_longjmp'
/usr/bin/ld: CMakeFiles/runner.dir/home/oku/repos/linux/_hostwasm/user.c.o: in function `w2c_user_inflate_unzip_internal':
/home/oku/repos/linux/_hostwasm/user.c:198991: undefined reference to `w2c_env_setjmp'
/usr/bin/ld: CMakeFiles/runner.dir/home/oku/repos/linux/_hostwasm/user.c.o: in function `w2c_user_abort_unzip':
/home/oku/repos/linux/_hostwasm/user.c:205502: undefined reference to `w2c_env_longjmp'
/usr/bin/ld: CMakeFiles/runner.dir/home/oku/repos/linux/_hostwasm/user.c.o: in function `w2c_user_unpack_bz2_stream':
/home/oku/repos/linux/_hostwasm/user.c:233647: undefined reference to `w2c_env_setjmp'
vfork
同様に作るのが良いかな。
適当なダミー関数だとエラーになる
error: type mismatch in local.set, expected [i32] but got [... i64]
とりあえず引数とreturnの型は揃えておくようにした。
Hello worldしてみた
とりあえずbusybox内部の echo
コマンドを起動してみた。ちゃんと Hello, Worldが出力されている:
次は。。telnetかなぁ。。inetdもどきを作るのは難しくないわけだし。。