その他 /

静的ライブラリ

BaCon では複数のプログラムで共通する部分を静的ライブラリ化する機能を備えています。

分かりやすい例が HUG を用いて複数のプログラムを作成する例です。
hug.bac は 2000 行を越える大きいライブラリです。
これを複数のプログラムに用いると……

  • 各プログラムに全く同じ HUG のプログラムが含まれる
  • hug.bac が各プログラムと一緒に毎回コンパイルされる。
    これはコンパイル時間を長く待たせる原因となります。

ならば、hug.bac のところだけを独立した形で生成し、それを読み込めば解決します。
これを実現させるのが共通ライブラリです。

実際に hug.bac を共通ライブラリにします。とても簡単です。

bacon -f hug.bac
これで hug.so が生成されます。

hug.bac の代わりに hug_include.bac を使用します。hug.so の置き場所を必要に応じて設定します。
この状態でコンパイルして下さい。
HUG のコンパイル時間がほとんどなくなり、コンパイル時間が短くなったはずです。
そしてフ実行ファイルのファイルサイズにも注目して下さい。小さくなっているでしょう。
この状態でも実行できる事を確認しましょう。これが静的ライブラリの効果です。

実際に BaCon を多用する Puppy Linux では、
hug.so を bacon の実行ファイルと同じ /usr/share/BaCon 内に置いています。
そして hug.bas の代わりに hug_include.bac を使用する事で
ファイルサイズを小さくする手法を公開しています。