dポイントプレゼントキャンペーン実施中!

ルーチンは「ひと続きの処理」です。 ひとつのプログラムは1個以上のルーチンから成ります。 ライブラリは複数のプログラムをひとつ(のファイル)にまとめたものです。 アセンブリ言語で書かれたプログラムをアセンブルしたり、C言語で書かれたプログラムをコンパイルすると「オブジェクトファイル」が生成されます。 これらをリンカを使用して結合し、「ライブラリ形式」で出力することで「ライブラリ」は生成されます。 別にライブラリ形式にしなくても(=オブジェクトファイルのままでも)他のプログラム(のオブジェクトファイル)と結合することは可能です。「ただ、その数が多いといちいちひとつひとつ指定するのが大変に面倒」なので、ライブラリにしておく、というだけの話です。 (ライブラリにしておけば、リンカが勝手にそのライブラリ内を検索し、必要なオブジェクトだけを抜き出してリンクしてくれます)
のカギカッコのところが分かりません。教えていただけると助かります。すみません。

A 回答 (5件)

コンパイル後の中間形式とはどういうことでしょうか


コンパイルしたものは、それ自体では動きません。実効形式ではないので、ソースコード(人間が解読できる文字の羅列)と実行形式(機械が解読実行できる機械語形式)の中間なので、便宜上、中間形式と読んでいますが、ソースコードも、コンパイラが解読して翻訳しているので、機械には意味が分からないとは言えません。中間形式もリンカーには解読できますから、機械には意味が分からないとは言えません。そういうものです。
    • good
    • 0

コンパイルユニットはコンパイル後の中間形式で、コマンプロンプトの画面を一瞬も出てきません(とおもいます。

コマンプロンプトの画面は使わないのでわかりません。)。
    • good
    • 0
この回答へのお礼

コンパイル後の中間形式とはどういうことでしょうか?教えていただけると助かります。すみません。

お礼日時:2021/12/05 11:49

3個はリンクされているのか


リンカーがリンクします。コンパイル(コンパイラー)はリンク(リンカー)を含めて実行されます。
コンパイル後の中間形式であるコンパイルユニットは、一時ファイルであり、リンクしてロードモジュール(オブジェクトファイル・EXEファイル)を形成すると、通常は消えてしまいます。
    • good
    • 0
この回答へのお礼

コンパイルユニットとはなんでしょうか?例えば、以下のURLのcドライブに保存したa.exeをクリックするとコマンプロンプトの画面を一瞬出てきて消えるみたいな感じでしょうか?教えていただけると助かります。すみません。
https://oshiete.goo.ne.jp/qa/12680950.html

お礼日時:2021/12/04 08:24

『 別にライブラリ形式にしなくても(=オブジェクトファイルのままでも)他のプログラム(のオブジェクトファイル)と結合することは可能です。

「ただ、その数が多いといちいちひとつひとつ指定するのが大変に面倒」なので、ライブラリにしておく、というだけの話です。』
 どのような開発環境で行おうとしているのか分かりませんが。
https://docs.oracle.com/cd/E19455-01/806-2734/ch …

https://qiita.com/edo_m18/items/9dfab147482b2ce3 …
が参考になるかと思います。
a.cがcドライブ、 b.cがデスクトップ、 c.cがdドライブにあると、3個指定しないといけなくなるので、全部同じところに保存しましょうということでしょう。
    • good
    • 0
この回答へのお礼

a.cがcドライブ、 b.cがデスクトップ、 c.cがdドライブにあると、3個指定しないといけなくなるので、全部同じところに保存しましょうということでしょう。
というのは、3個はリンクされているのでしょうか?教えていただけると助かります。すみません。

お礼日時:2021/12/03 22:19

う~ん、cだと質問の説明にかなり近いけど、一般的には問題の大きい解説かな。



まず、プログラムは「翻訳単位」=ソースプログラム が良いかも。

リンカーは翻訳単位をコンパイルしたオブジェクトをリンクの単位とする
場合もあるけど、より小さい単位でリンクするリンカーも有るので
リンカーは必ずしも「プログラム」を結合するものじゃない。

翻訳単位に含まれるのは、cでは関数はルーチンでよいけど、
静的変数や定数定義等も含まれる。
c#やJavaではクラスが主軸でかなり雰囲気が違う。
c++もかなり無理やりクラスの概念をオブジェクトに詰め込んでる。

なので、これは visual studioのc あたりに特化した話として
解説して貰った方が良いかも。リンクシステムはプラットフォームや
コンパイラ/リンカ・ローダーによって思想がかなり異なるので
一般的にはもっといい加減でふわっとした定義しか出来ない。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!