
ルーチンは「ひと続きの処理」です。 ひとつのプログラムは1個以上のルーチンから成ります。 ライブラリは複数のプログラムをひとつ(のファイル)にまとめたものです。 アセンブリ言語で書かれたプログラムをアセンブルしたり、C言語で書かれたプログラムをコンパイルすると「オブジェクトファイル」が生成されます。 これらをリンカを使用して結合し、「ライブラリ形式」で出力することで「ライブラリ」は生成されます。 別にライブラリ形式にしなくても(=オブジェクトファイルのままでも)他のプログラム(のオブジェクトファイル)と結合することは可能です。「ただ、その数が多いといちいちひとつひとつ指定するのが大変に面倒」なので、ライブラリにしておく、というだけの話です。 (ライブラリにしておけば、リンカが勝手にそのライブラリ内を検索し、必要なオブジェクトだけを抜き出してリンクしてくれます)
のカギカッコのところが分かりません。教えていただけると助かります。すみません。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
コンパイル後の中間形式とはどういうことでしょうか
コンパイルしたものは、それ自体では動きません。実効形式ではないので、ソースコード(人間が解読できる文字の羅列)と実行形式(機械が解読実行できる機械語形式)の中間なので、便宜上、中間形式と読んでいますが、ソースコードも、コンパイラが解読して翻訳しているので、機械には意味が分からないとは言えません。中間形式もリンカーには解読できますから、機械には意味が分からないとは言えません。そういうものです。
No.3
- 回答日時:
3個はリンクされているのか
リンカーがリンクします。コンパイル(コンパイラー)はリンク(リンカー)を含めて実行されます。
コンパイル後の中間形式であるコンパイルユニットは、一時ファイルであり、リンクしてロードモジュール(オブジェクトファイル・EXEファイル)を形成すると、通常は消えてしまいます。
コンパイルユニットとはなんでしょうか?例えば、以下のURLのcドライブに保存したa.exeをクリックするとコマンプロンプトの画面を一瞬出てきて消えるみたいな感じでしょうか?教えていただけると助かります。すみません。
https://oshiete.goo.ne.jp/qa/12680950.html
No.2
- 回答日時:
『 別にライブラリ形式にしなくても(=オブジェクトファイルのままでも)他のプログラム(のオブジェクトファイル)と結合することは可能です。
「ただ、その数が多いといちいちひとつひとつ指定するのが大変に面倒」なので、ライブラリにしておく、というだけの話です。』どのような開発環境で行おうとしているのか分かりませんが。
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個指定しないといけなくなるので、全部同じところに保存しましょうということでしょう。
a.cがcドライブ、 b.cがデスクトップ、 c.cがdドライブにあると、3個指定しないといけなくなるので、全部同じところに保存しましょうということでしょう。
というのは、3個はリンクされているのでしょうか?教えていただけると助かります。すみません。
No.1
- 回答日時:
う~ん、cだと質問の説明にかなり近いけど、一般的には問題の大きい解説かな。
まず、プログラムは「翻訳単位」=ソースプログラム が良いかも。
リンカーは翻訳単位をコンパイルしたオブジェクトをリンクの単位とする
場合もあるけど、より小さい単位でリンクするリンカーも有るので
リンカーは必ずしも「プログラム」を結合するものじゃない。
翻訳単位に含まれるのは、cでは関数はルーチンでよいけど、
静的変数や定数定義等も含まれる。
c#やJavaではクラスが主軸でかなり雰囲気が違う。
c++もかなり無理やりクラスの概念をオブジェクトに詰め込んでる。
なので、これは visual studioのc あたりに特化した話として
解説して貰った方が良いかも。リンクシステムはプラットフォームや
コンパイラ/リンカ・ローダーによって思想がかなり異なるので
一般的にはもっといい加減でふわっとした定義しか出来ない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の関数のextern宣言
-
c言語
-
DLLファイルの逆コンパイラにつ...
-
プログラマー達は何故、プログ...
-
逆コンパイルと逆アセンブルの...
-
VisualStudio2022でC言語プログ...
-
大量のデータを読み込んで表示...
-
プログラミングc++を全く分か...
-
C#でTreeViewのCheckBoxのサイ...
-
gccを行ってもexeファイルが生...
-
【C言語】全角文字の配列を、全...
-
DNCL(共テ用プログラミング言語...
-
DNCL(共テ用プログラミング言語...
-
プログラミングの課題がわから...
-
アセンブラ指令
-
C言語 関数、変数の宣言について
-
私は
-
コンソールアプリを作成するの...
-
複素関数はどこはあんまりやら...
-
Notepad++の関数リスト表示の変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UNIX上のプログラムで使うライ...
-
拡張子.niiのファイルの開き方...
-
ライブラリParamQuery gridにつ...
-
.NET(C#)でのスタックオーバー...
-
QRコード作成ライブラリ
-
Excel VBA のstr()関数でエラー
-
Unsatisfied code symbol エラ...
-
MakefileのLDLIBSとLOADLIBESの...
-
DXライブラリの画像の表示の仕...
-
コンパイル時のエラー
-
LinuxでC言語で
-
ライブラリ内の処理中における...
-
windows media playerでdropbox...
-
ファイルの圧縮/解凍(Zlib)に...
-
dxライブラリで作ったpcゲーム...
-
DxライブラリをVisualstudioを...
-
openCVの関数の中身を参照する...
-
ライブラリとAPIについて
-
「MFC40D.DLLがみつかりません...
-
アプリのバックグラウンド処理
おすすめ情報