- ベストアンサー
静的リンクと動的リンク
組込み関係の者です。(μITRONおんりー) できれば具体的な例などを挙げて頂いてご説明いただけると 助かります。 (1)静的リンクとは、ビルド時にライブラリファイルとリンクすることでしょうか?ソースファイルのAPIを呼び出しているのは静的リンク? (2)ビルドというのは、静的リンクを行ってロード用の1つのファイルを作成すること? CPU内蔵のROMに焼くのはこの1つのファイルのみ? (2)動的リンクする場合、どこにどういった形で置いておくもの? (μITRONでは動的リンクはないですが、Linuxとか使った場合) 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
静的リンク:プログラムが使っているライブラリをリンカが 組込み、実行形式ファイルの中に全ての使用ライブラリが存 在するように作成。 動的リンク:目的は複数のプログラムのトータルファイルサ イズを小さくすること。これにより、メモリの使用量を減少 させることが可能な場合もある。 静的リンクだと同じライブラリが、複数のプログラムの実行 形式ファイルに存在する。メモリの中に複数の同じものが存在 するということ。 動的リンクは、動的リンクライブラリのライブラリを複数のプ ログラムが使用する。 ただし、動的リンクライブラリファイルの中には使用しない 機能もあるので、使用プログラムが少ない場合、逆にファイル サイズが大きくなるので注意。 動的リンクはライブラリの呼び出しに時間がかかるのが一般的。 以上から動的リンクはマルチプログラミングでの利用がメイン となる。なので、同時に複数のスレッドから呼び出されても 矛盾しない構造が必要。 という前提を踏まえて。 (1)ライブラリが静的リンク用と動的リンク用が用意されている 場合、リンク時にどちらにするかを指定する。静的リンク時には 必要なモジュールだけが組込まれる。 (2)ビルドというのは静的リンクであっても動的リンクであって も構わない。実行できるプログラムを作ること。その手段は問 わない。 (2)動的リンクは動的リンクライブラリファイルを実行プログラ ムと同じフォルダ(ディレクトリ)に入れておけば間違いないが 複数のプログラムが使うという目的から、システムライブラリ フォルダに入れるのが一般的。
その他の回答 (1)
- jacta
- ベストアンサー率26% (845/3158)
μITRONでも、ローダブルモジュールを分割して、trap命令などを使って呼び出すことがあります。これはある意味で動的リンクだといえますね。
お礼
ご教示ありがとうございました。
お礼
勉強になりました。 ありがとうございました。