くぬぎざです。 On Wed, 17 Jan 2001 10:51:14 +0900 "mami" <mami.kimura@xxxxxxxxxxx> wrote: > newlib の exit() をリンクするとダメであれば、リンクする前に_exit() をコール > するものに置き換える必要があると思うのですが、 > exit()はどこにあるのでしょうか? exit() は、stdlib の中にあります。exit() は、atexit() で 登録された関数があればそれらを呼び、最後には _exit() を 呼んで終わります。つまり、atexit() とかを使っていないので あれば、_exit() へ行けばいいことなので、 #define exit _exit なんて方法で強引にやっちゃっても、実質的にはOKかと。 また、ごちゃごちゃ推測しているよりも h8300-hms-objdump -d なんたら.coff で逆アセンブラをかけてみて、どんなコードがやたらとサイズを 大きくしているのか調べておくのも良いでしょう。 > 一応、RAM領域を4kbyte以内に収めているつもりの小さなプログラムでさえ > コンパイルをすると、どうしてもプログラムサイズが4Kbyte以内に収まらないので > す。 うーん、わたしはあまりそれで困ったことないんだけどな... どういうプログラムなのか見ていないので何とも言えませんが、 中身をきちんと作ってきちんとリンクすれば、不必要なコードは でてきません。本当はいらないものでも、「いる可能性のある」 コードがあれば、必要だと判断するのがリンカーです。それを バグだと言っちゃあいけません(^^; 無くても困らないライブラリはリンクしないとか、ちょっと面倒 でもデバッグ中は、不必要なコードに #if 0 をかましておく、 というようなこともときどきやります。 椚座 淳介 (Junsuke Kunugiza)