「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

クロスコンパイル

pointこの用語のポイント

pointプログラムの元ネタを変換するよ

point人間語から機械語に翻訳するよ

point翻訳するやつが今いる環境とは別の環境で動くように翻訳するよ

スポンサーリンク

簡単に書くよ

クロスコンパイル(英:cross compile)とは

人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳する作業(コンパイル)の分類のひとつ
であり

例えば「翻訳してくれるプログラム(コンパイラ)はWindowsにいるけど、これから翻訳するプログラムはLinuxで動くように翻訳するよ」のように、コンパイラがいる環境とは別の環境で動くようにコンパイルすること
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

プログラムの作り方
ソースコード
コンパイル
コンパイラ
環境
クロスコンパイラ


について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

プログラムを作って動かすまでの一般的な流れは

1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従って、コンピュータさんが お仕事する


です。

クロスコンパイル

コンピュータさんは人間語が分かりません。

クロスコンパイル2

人間様はコンピュータさんの言葉が分かりません。

クロスコンパイル3

プログラムは人間様が作るものです。
そこで最初は人間様が分かる言葉でプログラムを作ります。
コンピュータさんに対する「あれをやれ」「これをやれ」な命令を人間語で書くのです。

クロスコンパイル4

次に人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳します。
実際に お仕事をするのは、コンピュータさんですからね。
コンピュータさんが分かる言葉に変換する必要があるのです。

クロスコンパイル5

コンピュータさんが分かる言葉に翻訳したので、コンピュータさんは命令の内容を理解できます。
指示に従って、お仕事をしてくれるでしょう。

クロスコンパイル6

かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。

この話で登場した「人間語で書いたプログラムの元ネタ」を「ソースコード」と言います。

クロスコンパイル7

また、ソースコードをコンピュータさんが分かる言葉に翻訳する作業を「コンパイル」と言います。
コンパイルは人間語を機械語に翻訳する作業です。

クロスコンパイル8

コンパイルするのがお仕事なプログラムは「コンパイラ」と言います。
コンパイラは人間語を機械語に翻訳してくれるプログラムです。

クロスコンパイル9

環境は、何かをするための「場」です。
コンピュータとか、中身のソフトウェアとか、回線とか、その他の機材とか、必要な設定とか、あれやこれやの諸々を ひとまとめにして呼んだものです。

クロスコンパイル10

クロスコンパイラは「コンパイラ自身がいる環境とは別の環境で動くようにコンパイルするコンパイラ」です。

クロスコンパイル11

一般的なコンパイラは、コンパイラ自身が置いてある環境と同じ環境で動くようにコンパイルします。
Windows上で動くコンパイラであれば、コンパイルするプログラムはWindowsで動くはずのやつです。
コンパイルしたプログラムはWindows上で動きます。

クロスコンパイル12

そうではなく、コンパイラ自身が置いてある環境と別の環境で動くようにコンパイルするやつがクロスコンパイラです。
例えば、自分はWindows上にいるけど、Linuxで動くプログラムをコンパイルしたりします。

クロスコンパイル13

以上を踏まえて

コンパイラ自身がいる環境とは別の環境で動くようにコンパイルする

のが「クロスコンパイル」です。
クロスコンパイラさんがやっているお仕事のことですね。

クロスコンパイル14

例えば、そうですね。

ピヨ太君がピヨ太パソコンでプログラムの元ネタ(ソースコード)を書いています。

クロスコンパイル15

作っているプログラムはピヨ子ミニミニコンピュータ(通称:ピヨ子ミニコン)で動かすためのプログラムです。

クロスコンパイル16

ソースコードが書きあがりました。
早速、ピヨ子ミニコン上でコンパイルしよう……と思ったのですが、問題が ありました。
ピヨ子ミニコンはミニミニなコンピュータです。
コンパイルするプログラムを入れられるほど容量がありませんし、もし入ってもコンパイルするのに耐えられるだけの性能がありません。

クロスコンパイル17

仕方がありませんね。
ピヨ太君は、ピヨ太コンピュータ上で「ピヨ子ミニコンで動くプログラム」をコンパイルすることにしました。

クロスコンパイル18

ピヨ太君は「ピヨ太コンピュータで動く、ピヨ子ミニコンで動くプログラムをコンパイルするためのコンパイラ」をピヨ太コンピュータに入れます。

クロスコンパイル19

そして、ピヨ太コンピュータ上で「ピヨ子ミニコンで動くプログラム」をコンパイルしました。

クロスコンパイル20

あとは簡単です。
ピヨ太コンピュータ上でコンパイルしたプログラムをピヨ子ミニコンに入れれば、ピヨ子ミニコン上でプログラムを動かせます。

クロスコンパイル21

この話で出てきた「ピヨ太コンピュータで動く、ピヨ子ミニコンで動くプログラムをコンパイルするためのコンパイラ」がクロスコンパイラです。
クロスコンパイラさんがやってくれた「ピヨ子ミニコンで動くプログラムをピヨ太コンピュータ上でコンパイルする作業」がクロスコンパイルです。


image piyo2

一言でまとめるよ

まぁ「クロスコンパイル」って単語が出てきたら「別の環境で動くようにコンパイル(人間語で書いたプログラムの元ネタをコンピュータさんが分かる形に翻訳すること)するんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像055
書籍画像047

おまけ

■訳してみるよ

「cross(クロス)」の意味は「十字」とか「交差」とか「横切る」とか「横断する」とかです。
「compile(コンパイル)」の意味は「1つに集める」とか「編集する」とかです。
何となく くっつけると

横断するように編集する

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
おい点P、動くんじゃねえ!──ニガテ民のための算数と数学の本
サイバー忍者入門 忍者・スパイ・軍隊・ハッカーに学ぶ フルスタック・ハッキング