ビルド、Linkなどの言葉

解決


課長 島  2014-01-21 07:40:59  No: 73866

皆さん、大変申し訳ありません。
技術的な話題で忙しいでしょうが、また多分怒られるでしょうが、ここに投稿していいのかわかりませんが、『言葉』の『定義』について教えてください。(RUNTIME系省く)

私は、コンパイル(コーディネートをMC語)→リンク(他のSUB(dll)とドッキング)→実行可能プログラムの出来上がり。

と思っているのですが、最近の”ビルト”とかよく意味(区分)が分りません。
今はどういうアレンジをコンパイラー(古い言葉で申し訳ありません)はしているのでしょうか。大変申し訳ありませんが教えてください。


瀬戸っぷ  2014-01-21 19:53:20  No: 73867

人によって、または言語によって異なる場合もあるかも知れませんけど……。

・コンパイル
  特定のプログラミング言語から別のプログラミング言語への変換
・アセンブル
  アセンブリ言語から機械語への変換
・リンク
  機械語のファイルから他の必要なライブラリなどを結合して実行可能ファイルを作成する
・ビルド
  上記の一通りの処理を実行すること

って感じの認識ですかねぇ。

C言語だとコンパイルの段階でプリプロセッサなりの処理を行ってアセンブルソースを作成、次にアセンブルしてオブジェクトファイルを生成。
# オブジェクトファイルの生成までまとめて実行するのをコンパイルと言うコトもあるやも知れません。
ライブラリファイルなどと結合して実行可能ファイルを作成。と……。
# で、最近のものなら実行時に動的にリンク(DLL読み込むとか)して動作するものも多いですかね。

C#だとアセンブル…とは言わないかな?

http://www.weblio.jp/content/Build
http://www.weblio.jp/content/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB?dictCode=BINIT
http://www.weblio.jp/content/link?dictCode=BINIT
リンクはハイパーリンクの説明になってますな…。


ぶん  2014-01-23 03:13:43  No: 73868

私の理解では、コンパイル,リンク,ビルドといった言葉とDLLでは用語の次元が違うと
思います。

最近は.NET(C#言語とか)など、exeファイルがすなわち、最終ネイティブファイルでない
こともあり、ややこしいのでネイティブコンパイラ(C++言語とか)に話を限定すると、
EXE, DLLは全て実行ファイルです。
(EXEとDLLの違いはそれ自身が起動元であるか、他の実行ファイルからキックされて起動
するかの違いであり、実行ファイルであることに変わりはない)

実行ファイルは以下の手順でできあがります。
 ソースファイル → (コンパイル) → 中間言語 → (リンク) → 実行ファイル

重要なのは中間言語はネイティブコンパイラ間で共通であること。
つまり、C++言語で作った中間言語とPascal言語で作った中間言語をあわせてリンクとか
そういったことができるわけです。

(参考)
現実には呼び出し規約やら何やらいろいろ合わせないといけないので、複数言語の中間言
語を混ぜてリンクするのは言うほど簡単ではないですが。

で、最近は統合開発環境が主流なので、ボタン一発で
 「ソースファイル」 → 「実行ファイル」
というのが多いわけです。一発でやる場合は、その作業を「ビルド」と呼んでいるわけです。


課長 島  2014-01-23 08:32:02  No: 73869

瀬戸っぷさん、ぶんさん、ありがとうございました。

私の時代は「FORTRAN」や「COBOL」が全盛期だったので今とはちょっと違いました。そのあとちょっとして「C言語」が出てきてコンパイル(今でいうビルドのこと)に数十分(パソコンの能力も大きな原因)かかって・・・・という時代でした。

一時アセンブリ言語もかじって(コンパイルが速かったので・・・)、そのめんどくささから、今VC++2008(無料版)の勉強を始めたのですが、非常に便利な反面、コンパイルが速いので、実行可能言語になるまでの仕組みが気になって今回の質問をさせていただきました。

基本的に変わっていないことがわかってよかったです。
大したことのない質問にわざわざご回答いただいて、大変ありがとうございました。すっきりしました。(礼)


課長 島  2014-01-23 08:34:05  No: 73870

『解決』わすれていました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加