• ベストアンサー

ダイナミックリンクとスタティックリンクについて

現在、コボル言語を使用してプログラム開発を行っております。 コンパイルしたロードモジュールがダイナミックリンクかスタティックリンクかとの質問をされているのですが、そもそもダイナミックリンクとスタティックリンクとはどういうことですか?教えてください。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

実行に必要なライブラリを、実行時にロードモジュールにリンクするものをダイナミックリンクといいます。 コンパイルされたロードモジュールに最初からライブラリもリンクしてある場合はスタティックリンクです。 ダイナミックリンクはモジュールサイズを小さくでき、ライブラリの更新がされた場合もライブラリを変更するだけですみます。そのかわり実行のたびにリンク作業が必要なのでそのコストがかかります。最近のコンピュータではまず問題にならないでしょうが。スタティックリンクの得失はその逆です。ライブラリが更新されたら、コンパイルしなおさないといけません。 UNIXであればfileコマンドでどちらか簡単に調べられますが、その他のOSではよく知りません。

関連するQ&A

  • cobol サブルーチンのlink

    cobol言語プログラミングでの質問です。 サブルーチンで 【ダイナミックLINK】と【スターティックLINK】というのがあるようですが、どのような違いがあるのでしょうか?今、私の認識は以下の通りなのですが正しいでしょうか??→例えば、ダイナミックはサブルーチンを修正し、コンパイル完了するとメインをコンパイルしなくてもサブルーチンの修正が反映される。スターテックはサブルーチンを修正し、コンパイル完了してもメインをコンパイル完了するまではサブルーチンの修正が反映されない。どうでしょうか????

  • ライブラリファイルのリンク (リリースバージョン時)

    VisualC++ 2005 Express Editionでライブラリファイル(.lib)をリリースバージョンでビルトし、違うプログラム(デバックバージョン)でライブラリファイルをリンクしたとき 1>コンパイルしています... 1>main.c 1>リンクしています... 1>CheckMemory.lib(check_memory.obj) : MSIL .netmodule または /GL を伴ってコンパイルされたモジュールが見つかりました。/LTCG を使用して再開始してください。リンカのパフォーマンスを向上させるためには、コマンドラインに /LTCG を追加してください。 1>LINK : warning LNK4075: /INCREMENTAL は /LTCG の指定によって無視されます。 1>LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 と出るのですが、これはどうゆうことなのでしょうか? 分かる方いらっしゃいますか?お願いします。 ちなみにライブラリファイルは簡易メモリチェックプロブラムでデバック時のみ使用したいと考えているプログラムです。 使用言語はc言語です。 文章下手ですみません^^;

  • パソコンで、COBOL言語開発できますか?

    会社の業務で、自分独自のプログラムを作成して仕事をしたいのですがVBやアクセス、SQL言語を最初から勉強するのは大変です。 以前COBOL言語でプログラムを開発した事があるので、その知識を 使ってパソコンでプログラムを開発できないでしょうか>? 個人なので NET_COBOL等 高額なソフトを購入する予算もありません し 開発(画面設計含む)、デバック、コンパイル、最終的に動かす制御言語までの流れもパソコンではどうなるのか? 検討もつきません。 パソコンでコンパイルと言う概念があるのかさえ 解っていません! 会社の基幹系システム(SQL)よりODBCで一旦 自分PCに必要なデータだけダウンロード(データベースaccess)し、個人の環境だけで動作できれば良いのですが! やっぱし 安価、独学では難しいでしょうか? セミナーでもあれば 教えてください。

  • 静的/動的リンクライブラリについて

    Pythonのctypesを使っていてふと気になったので質問させていただきます。 Cと少々Java、程度の経験しかなかった私にとって、ctypesによって「Cのデータ型を利用できる」「dllをロードして、エクスポートされている関数を使用できる」というのは衝撃でした。 しかし、考えてみれば、仕組みとして理解できなくもない・・・かな?と現在は思っています。 ただ気になったのは、  ・どうして静的リンクライブラリ(.lib)の方は対応してないの? ということです。 [質問1]これは原理的に不可能なのでしょうか、それともctypesやPythonの仕様としてできないだけなのでしょうか。 (おそらくは「原理的に不可能」なのだろう、と個人的には思っておりますが・・・。) 以下は私の中の解釈ですが、 ・マシン語として実行可能な形式になっているdllは、実行時のリンクの機構さえ整っていれば別にC言語でなくともロードや中身のコードを利用することはできる。 ・また、Cのデータ型についても、要は型のバイト数やフォーマット(つまり内部的な扱われ方)をPythonインタプリタが押さえていれば良い話であるから、PythonでCの型を使用することは原理的に可能。 さて、 [質問2]それではlibはどうか。 libもコンパイル済みのものであるなら、Python(またはC以外の言語)からlib内のコードを利用することはできるのではないか? どちらかのみの回答でも結構です。 また、解釈の誤りについてのご指摘や、リンクライブラリの仕組みを解説したページを教えてくださると助かります。 よろしくお願いします。

  • 今 主流のプログラミング言語について

     現在、COBOL言語での、システム開発を行っています。 しかし、仕事が減ってきていて、ほかの言語も勉強しようかと、 思っています。(COBOL言語しか分かりません)  そこで、今習うなら、どの言語が良いでしょうか?  アドバイスお願いします。

  • LMがリンクしている全モジュール名の調べ方

    OS : HP-UX R13 言語 : C コンパイラ : aCC LM(ロードモジュール)にリンクされているモジュールをリストアップする方法があったような 覚えがあるのですが思い出せません。 どなたかご存じありませんでしょうか? 私は静的ライブラリ(*.a)の提供者で、LM作成者は別の人間、提供しているライブラリ中のどのモジュールが 使われているのかを調べたい、といった状況です。

  • インタプリタはロードモジュールを作成する?

    情報システムを勉強し始めた初心者です。 私の持っているテキストには以下のように書いてあります。 ・「ソースプログラム」を「ロードモジュール」に変換するプログラムが「言語プロセッサ」。 ・「言語プロセッサ」には「コンパイラ」や「インタプリタ」が使われる。 つまり、コンパイラもインタプリタもロードモジュールを作成するものだと思っていました。 しかし、以下のような問題がありました。 問題: インタプリとは、高水準言語で書かれた原子プログラムを、機械語のプログラムに翻訳してロードモジュールを作成するプログラムである。 答え: 間違い。インタプリタではなく、コンパイラの説明になっている。 つまり、インタプリタはロードモジュールを作成しないということなのでしょうか? どなたかご教授お願いいたします。

  • プログラミング言語で環境

    こんにちは。 COBOL言語の総合開発環境はあるのでしょうか?? COBOL言語を紙面で勉強したことはあるのですが、 プログラムとしてコンピューターに打ち込んだことはありません。 また、勉強したのですがおすすめがあれば教えてください。 ※ ちなみにC言語の勉強するお勧めは[visual studio]ですよね??

  • CASLIIのプログラムで開発ができるの?

    基本情報処理技術者試験の午後のプログラム選択問題にCASLII(過去はCASLだったけど) そのアセンブラ言語なんぞで、何か新規開発ができるのでしょうか? C言語、Java、COBOLなら、色々な会社で開発してることはよ耳にしますが、CASLIIで開発してる とは耳にしたことがありません。もしもCASLIIで開発ができないのなら何の為に午後のプログラム言語問題にあるのでしょうか?それも知ってる方が居たら教えていただきたくて質問しました。 お願い致します。

  • MinGWでのリンク

    Widows上で、MinGwを使用してC言語でプログラミングをしようとしています。 test.c aaa.c の二つをコンパイルして、あとでldでリンクをしようとしています。 コンパイルは gcc -c test.c aaa.c で問題なくコンパイルができたのですが、リンクをしようとして ld -o test.exe aaa.o test.o -lc とすると、 ld: cannot find -lc と表示されて、リンクがうまくいきません。通常の(?)gccではこれでできると思うのですが(経験があるわけではなく、単にググっただけですが。。。)どこが間違っているのでしょうか。 OS:WinXP SP2 gcc version 3.4.2 (mingw-special) よろしくお願いいたします。