busybox は動くようになった。
それでも、uClibc を作り直すことはできるようになった。
これで busybox を作り直して uclinux で起動。
ちゃんとうごくようになった。
やっと次のステップに行ける。
TODO
コンパイラ
UCLIBC_CTOR_DTOR を is not set にすると uClibc は crti.o crtn.o を作らなくなる。
するとコンパイラエラーです。仕方がないので、gcc の crti.o と crtn.o をリンクすると
_init _fini が undefined になる。当たり前か。ちゃんと自前で用意しなければいけない。
_init _fini は今はすることはないので空関数にしておしまいにする。
gcc はこの辺巧妙にしていて、アセンブラをサンド一致する形で関数を作っていく。(こともある)
巧妙というか汚いでしょ。
記憶では確か、_init から _fini の間に ?.o がはいっていそれが
順に並ぶことで関数になる例えば、
_init
関数の宣言
?0.o
なんかの初期化処理
?1.o
なんかの初期化処理
_fini
関数のリターン
つまり、_init から _fini までで一つの関数。
なんか forth を思わせるな。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-