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

前回の続き。


Macで「30日でできる!OS自作入門」を成し遂げた人を参考にトライ!
github.com

説明通りに必要なものを集めます。

1. 作業用ディレクトリを作る

 ・HariboteOSとします。

2. 「30日でできる! OS自作入門」付属のCD-ROMデータからprojectsディレクトリとtolsetディレクトリをHariboteOSにコピーする

3. tolsetOSXのダウンロード

・ダウンロードリンク

 http://shrimp.marokun.net/osakkie/wiki/tolsetOSX/

・tolsetOSX-070221.dmgという名前のファイルをダウンロードして解凍

 #同じページにtolsrcOSX-070221.dmgがありますが、tolsetOSX-070221.dmgの方です。

・解答したデータからz_toolsディレクトリをHariboteOSにコピーする

4. Q.appをダウンロード
Q Emulator 0.9.0a89 for Mac - Download


ここまで出来たら作業用ディレクトリがこんな風になってるはずです。

HariboteOS/
 |- projects (付属CD-ROMのデータ)
 |- tolset (付属CD-ROMのデータ)
 |- z_tools (tolsetOSX.dmgのデータ)
 |- Q.app (qemuのシンボリックリンク)


そしたら、シェルスクリプトを実行します。

$ curl https://raw.github.com/sandai/30nichideosjisaku/master/bin/install.sh | sh

実行結果:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   139    0   139    0     0     52      0 --:--:--  0:00:02 --:--:--    52
100  134k    0  134k    0     0  29179      0 --:--:--  0:00:04 --:--:--  154k
おわり!がんばってOS作ってね!

おっ、なんかうまくいったみたい。
何されたのかよくわからなかったが、ディレクトリを確認するとファイルが色々出力されていました〜

$ ls
01_day		08_day		15_day		22_day		29_day
02_day		09_day		16_day		23_day		30_day
03_day		10_day		17_day		24_day		install.sh
04_day		11_day		18_day		25_day		trash
05_day		12_day		19_day		26_day		z_tools
06_day		13_day		20_day		27_day
07_day		14_day		21_day		28_day

#30日は間に合うか怪しいですが、一応スタートは切れました ( ^ ω ^  )

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日で終わらない予感