Macで「30日でできる! OS自作入門」の開発環境準備 その0

仕事で組み込みLinux関連の業務をやるようになって、
今までOSというものをまるで勉強して来なかったので、
ちょうどいいタイミングだから勉強してみようと思い始めました。


あと、TEDでマット・カッツの30日間チャレンジのススメを見たのもあって、30日でできそうなものを探していたのでちょうどよかった。

この本はWindows用で書かれている。しかし、先人には同じようにMacでトライしている人がいるので、臆せず調べながらやってみることに。

まずは、さっそく付属のCD-ROMからデータをコピってmake installしてみる。

が・・・。

$make install

(省略)

gcc -c -Os -o cpp0main.obj cpp0main.c
In file included from cpp0main.c:8:
./cc1drv.c:26:5: error: second parameter of 'main' (argument array) must be of
      type 'char **'
int main(int argc, UCHAR **argv)
    ^
1 error generated.
make[6]: *** [cpp0main.obj] Error 1
make[5]: *** [all] Error 2
make[4]: *** [gocpp0] Error 2
make[3]: *** [all] Error 2
make[2]: *** [all] Error 2
make[1]: *** [all] Error 2
make: *** [install] Error 2

どうやらOSXgccの問題らしい。下のページを参考にgccをアップデートしてもう一回make install。
MacOSXでOS自作覚え書き 下準備編 - It works!

$make install

(省略)

gcc -Wl,-s -o gocc1  ../drv_stdc/cc1main.obj c-parse.o c-lang.o attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-format.o c-semantics.o c-objc-common.o libcpp.lib libbackend.lib \
		../intl/libintl.lib ../libiberty/libiberty.lib ../go_lib/go_lib.lib ../go_lib/stdin.o ../drv_stdc/drv_stdc.obj 
ld: warning: option -s is obsolete and being ignored
Undefined symbols for architecture x86_64:
  "___builtin_stdarg_start", referenced from:
      _pedwarn_c99 in c-errors.o
      _status_warning in c-format.o
      _build_stmt in c-semantics.o
      _build_message_string in libbackend.lib(diagnostic.o)
      _output_printf in libbackend.lib(diagnostic.o)
      _fnotice in libbackend.lib(diagnostic.o)
      _internal_error in libbackend.lib(diagnostic.o)
      ...
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[4]: *** [gocc1] Error 1
make[3]: *** [all] Error 2
make[2]: *** [all] Error 2
make[1]: *** [all] Error 2
make: *** [install] Error 2

またしてもエラー。。。。。全然解決できなくて諦めました。

Macですでに完遂されている方のコードを参考にして次回から進めて行きます。
github.com


#30日で終わらない予感