• ベストアンサー

静的リンクと動的リンク

組込み関係の者です。(μITRONおんりー) できれば具体的な例などを挙げて頂いてご説明いただけると 助かります。 (1)静的リンクとは、ビルド時にライブラリファイルとリンクすることでしょうか?ソースファイルのAPIを呼び出しているのは静的リンク? (2)ビルドというのは、静的リンクを行ってロード用の1つのファイルを作成すること? CPU内蔵のROMに焼くのはこの1つのファイルのみ? (2)動的リンクする場合、どこにどういった形で置いておくもの? (μITRONでは動的リンクはないですが、Linuxとか使った場合) 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

静的リンク:プログラムが使っているライブラリをリンカが 組込み、実行形式ファイルの中に全ての使用ライブラリが存 在するように作成。 動的リンク:目的は複数のプログラムのトータルファイルサ イズを小さくすること。これにより、メモリの使用量を減少 させることが可能な場合もある。 静的リンクだと同じライブラリが、複数のプログラムの実行 形式ファイルに存在する。メモリの中に複数の同じものが存在 するということ。 動的リンクは、動的リンクライブラリのライブラリを複数のプ ログラムが使用する。 ただし、動的リンクライブラリファイルの中には使用しない 機能もあるので、使用プログラムが少ない場合、逆にファイル サイズが大きくなるので注意。 動的リンクはライブラリの呼び出しに時間がかかるのが一般的。 以上から動的リンクはマルチプログラミングでの利用がメイン となる。なので、同時に複数のスレッドから呼び出されても 矛盾しない構造が必要。 という前提を踏まえて。 (1)ライブラリが静的リンク用と動的リンク用が用意されている 場合、リンク時にどちらにするかを指定する。静的リンク時には 必要なモジュールだけが組込まれる。 (2)ビルドというのは静的リンクであっても動的リンクであって も構わない。実行できるプログラムを作ること。その手段は問 わない。 (2)動的リンクは動的リンクライブラリファイルを実行プログラ ムと同じフォルダ(ディレクトリ)に入れておけば間違いないが 複数のプログラムが使うという目的から、システムライブラリ フォルダに入れるのが一般的。

FFF10FFF
質問者

お礼

勉強になりました。 ありがとうございました。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

μITRONでも、ローダブルモジュールを分割して、trap命令などを使って呼び出すことがあります。これはある意味で動的リンクだといえますね。

FFF10FFF
質問者

お礼

ご教示ありがとうございました。

関連するQ&A