Cプログラムをコンパイルしてリンクするときは、次のようにリンクすることを知っています
- C ライブラリ
- C ランタイム スタートアップ コード
プログラムを (新しい言語で、またはこのコードにリンクせずに C だけで) 作成し、それを C コードの共有ライブラリ (zlib、gsl、fftw など) に直接リンクし、C ライブラリと C のスタートアップを省略しているかどうか疑問に思います。コード(私のプログラムがその魔法を使用して外部ライブラリ自体をロードすると仮定)、これは「うまくいく」でしょうか?
CRT スタートアップに初期化コードがあることはわかっているので、アプリケーション自体を C ライブラリに依存させずに、必要な関数を呼び出すにはどうすればよいのでしょうか。そのため、外部 C ライブラリをロードすると、その時点で必要な初期化コードが呼び出されます (それ以外の場合は、OS ライブラリ/インターフェイスをロードするだけです。
私が尋ねる理由は、C ライブラリの上に構築されるほとんどの C++ 実装とは異なり、OS API に直接フックする標準ライブラリを使用して言語を書きたいからです。