VOS C にはライブラリという概念が存在しない。gcc も移植され、OpenVOS といった、GNU 環境では静的ライブラリは動くようだが、動的ライブラリは無いみたいだ。
それ故の拡張だろう。bind はプログラムをリンクして、名前を解決できない関数を、ファイル名を元に探しにいく。例えば、memset が使われているが、指定されたオブジェクトの中に存在しないときだ。そこで、memset.obj というファイルを探して、取り込むのだ。C 言語のライブラリ関数はすべてこれに当たる。この様な拡張が無ければ、Hello world! のプログラムさえも作るのが大変になる。printf を持つオブジェクトファイルを知っている必要があり、また、printf の依存関係も知らなくてはファイルの指定も出来ない。
必要悪ではあるのだろう。しかし、この機能が意図しない同名の関数の実装を勝手に取り込み、異常な動作を起こすのだ。何種類かの事象はあったが、結局は意図しない関数を取り込んだことが原因で、不明な動作を起こすことが多々ある。
そこで、回避策として考えたのが、業とオブジェクトパスを設定せずに、相対または絶対パスで指定をすることだ。
セコメントをする