(toppers-users 256) Re: Why don't we use library.

TAKADA Hiroaki hiro @ ertl.ics.tut.ac.jp
2001年 8月 16日 (木) 17:22:22 JST


もなかさん wrote:
> JSPは、リンク時にオブジェクトを列挙するようMakefile
> に書いてあります。ライブラリに纏めてからリンクすれば、
> 必要メモリの削減に繋がるのではないでしょうか?

はい。必要メモリの削減に繋がります。

> ソースファイル間での呼び出しの依存性が高ければ
> 効果は薄いような気もします。

ソースファイル間のかなり高いはずです。例えば、イベントフラグを使わない
なら、eventflag.c は不要です。もう少し具体的には、

       task_manage.o task_sync.o task_except.o \
       semaphore.o eventflag.o dataqueue.o mailbox.o mempfix.o \
       time_manage.o cyclic.o sys_manage.o interrupt.o exception.o

の各モジュールは、そこに含まれるサービスコールを呼んでなければ、リンク
する必要がありません。その他のモジュールは、取り外し効果が薄いと思いま
す。

> かといって分割していくと、
> 究極的には関数毎に1ファイルという形になって、
> 見通しが悪くなりそうです。
> どこまでやるかは、検討の余地があります。

これが悩みところです。

売られているμITRON仕様OSですと、1ファイル1関数になっているものもあ
るようです。GCC の libgcc では、各関数を #ifdef, #endif で囲って、-D 
で定義した関数のみをコンパイルする形にしています。この方法ですと、ファ
イル数は増えませんが、ソースはやっぱり汚くなります。

> JSPは、教材としての側面もあるので、本質とは関係ない
> 姑息な手を使うことに、すこし躊躇する気持ちもあります。

> 反対意見が無ければ、試してみようと思うのですが、
> みなさんはどう思われますか?

試すのは、ご自由にどうぞ。

今のファイル単位をそのままライブラリ化するのは、ごく簡単だと思います 
(10分もあればできますよね)。関数毎にファイルを分けるのは、ちょっと面倒
ですね (とは言え、力仕事ですが)。

いずれにしても、ライブラリ化については、マニュアルのどこかに記述するよ
うにしたいと思います。

高田広章
豊橋技術科学大学