MacMiNTの下でBSDのツールを作る
Pages in English
まず最初に、"make"(bsd make), "cc"(実際にはgcc), "cpp", "cc1", "as",
"ld",のような、BSDのツールが必要だとわかった。
使ったほとんどのソースはNetBSD1.0からのものであるが、
"config"のソースはNetBSD-currentのものである。
- 第一に"make"を作り始めた(試しに)[95年9月]
Makefile.bootという"gnu make"用のMakefileがあったので、
そのころまだMakefileと言うものに慣れていない私にとって
楽だった。
MacMiNTのインクルードファイルとBSDのそれとは異なっているので、
ソースディレクトリの中に"bsdinc"というディレクトリを作り、
Makefile(元はMakefile.boot)の"CFLAGS"に"-Ibsdinc"を加えた。
そして、BSD固有のインクルードファイルをその中に入れた。
"make"のコンパイルが成功した。[95年10月]
- それから、 "sys.mk"や/usr/share/mk(Unixファイルシステムで)からの
他のファイルをコピーした。なぜか、"bsd.dep.mk"というファイルが
読まれなかったので、("Could not find"エラー)
"bsd.dep.mk"を"bse.dep.mk"にコピーした。
そして、"bsd.*.mk"の中の名前を変更した。 [95年10月]
- 次に、GNUのツール("cc", "cpp", "cc1", "as",
"ld")をコンパイルすることに挑戦した。 [95年11月]
これらをコンパイルする上での問題は、ソース中に"alloca"が
多量にあることだった。これにより、プログラムを実行すると
異常終了してしまった。"alloca"を"malloc"(実際には
メモリが足りないと異常終了する"xmalloc")に変えなくてはならなかった。
それは、大変な仕事だった。実は、すべての"alloca"を変えたわけではない。
あまりメモリを必要としないものは変えなかった。
その後、これらをコンパイルすることができた。 [96年1月]
- カーネルを構築するには、"config","mkdep","ranlib","tsort",
"lorder"も必要である。
"config"はディレクトリにリンクを張ろうとするので、
そこをコメントアウトした。なぜなら、MacMiNTはディレクトリのリンクに
対応していないからだ(たぶん)。そして、リンクの代わりにコピーした。
他のものを作るのはそれほど難しくなかった。
これらすべてをコンパイルした。 [96年2月]
- "config.new"(古い名前),"ar","nm",and "yacc"も
作ったが、これらはカーネルをコンパイルするのには必要なかった。
さて、カーネルを作る準備ができた。
もっと信頼のあるドキュメントが
ここ(puma)にある。