01.Linux基礎バイオインフォ

#3【linux基礎】「Cコンパイラ」「gcc」の意味

Linux初心者の方へ「Cコンパイラ」「gcc」の意味を解説します。

ねこ研究員
ねこ研究員

丁寧にいきます。
怖がらないで!

「Cコンパイラ」とは

C言語のプログラムをコンパイルするソフトのことです。

C言語のファイルをコンパイルするソフト。だから「Cコンパイラ」と言います。

「コンパイルする」とは

機械語に翻訳すると言うことです。

イメージで言うと「int abc; print ****」などのC言語で書かれたファイルを、「00010011101000100」という機械語に翻訳する操作のことです。

ねこ研究員
ねこ研究員

なぜそんなことをするのですか?

実はC言語は私たちが理解する為の言葉です。Linuxには理解できません。Linuxが分かるのは「0」とか「1」だけです。従って、上記のような「0」「1」への翻訳をする必要があります。この操作を「コンパイル」と言うのです。

「Cコンパイラ」は頻繁に使われている

ねこ研究員
ねこ研究員

私はC言語を使わないから関係ないですよね?

いいえ。Linuxにソフトウェアをインストールするときは大抵C言語を使っています。

「Cコンパイラ」は裏方で使われている

ねこ研究員
ねこ研究員

…C言語を使った覚えはないです。

ソフトをインストールする手順を思い出して見ましょう。

簡単に言うと、「Webからダウンロード」→「インストールウィザードに従ってインストール」ですね。

実は「インストールウィザード」が裏方でC言語を走らせることが良くあます。これによりソフトが自分のPCにインストールされているという構造になっています。

つまり、気づかずに使っていたと言うことです。

「Cコンパイラ」がないLinux

ねこ研究員
ねこ研究員

インストールウィザードがやってくれるなら、結局コンパイラの存在は気にしなくてOKですね!

Windows/Macでは正しいです。Linuxでは違います。

LinuxではCコンパイラが入っていないことがあります。共用のLinuxなら多分誰かが入れてありますが、自分でOSを入れた場合にCコンパイラが入っていないことがあります。

このとき、ソフトウェアをインストールしようとしたら「エラーが出て謎の失敗」が起こり得ます。

「Cコンパイラ」の有無を確認すべきか?

ねこ研究員
ねこ研究員

不安です。今すぐCコンパイラの有無を確認したいです。

まず、Linuxにソフトウェアをインストールする方法はいくつかあります。

  1. ダウンロード → インストールウィザードを使う (Google Chromeなど一部)
  2. ダウンロード → インストールウィザードの代わりにコマンドを使う
  3. ダウンロードからインストールまで全自動のコマンドを使う。

このうち、2または3の時にCコンパイラがないことによるエラーが起こります。2で使うコマンドは「configure」「make」「autoconf」など。3で使うコマンドは「yum」「apt-get」などです。

従って、上記コマンドを実施してエラーがでた時だけ「Cコンパイラの有無の確認」を行えば良いでしょう。

なお、コマンド実施でエラーが生じた場合には、エラーの手がかりとなるメッセージが出力されます。もしCコンパイラがないことに起因するエラーであれば「no acceptable C compiler found in …」のようなメッセージがでます。これを手がかりにしましょう。

「configure」「make」などの意味についてはこちらです。

「Cコンパイラ」の有無の確認

ねこ研究員
ねこ研究員

エラーが出てしまいました。確認方法を教えてください。

LinuxのCコンパイラといえば「gcc」と言う名前のソフトウェアです。「gcc」が自分のPCに入っているか調べます。

CentOS系のLinuxなら、「gcc」が入っているか確認する方法は以下です。

yum list installed | grep gcc

「yum list installed」は「既にインストールされたパッケージ」を全て出力されます。「|」には「|」の左側の結果を右側に渡す意味があります。「grep gcc」は「gcc」という文字が含まれる行を抽出して出力するという意味です。したがって、既にインストールされたパッケージのうち、「gcc」というワードが入った行を全て出力せよ、という意味になります。

「gcc」が既にあるとき、上記コマンドの結果は以下のようになります。

「gcc.x86_64」はコンパイラ本体、「libgcc.x86_64」はCコンパイラの付属品のようなものです。どちらも必要です。

もし、「gcc」がないならば、上の画像のような結果になりません。おそらく「gcc」の文言が入った結果は何も出力されないでしょう。「gcc」のインストールが必要です。

「gcc」のインストール

CentOS系のLinuxならば、

yum install gcc

で終了です。

インストール後、上記のインストールされているか確認するコマンド実施するといいかもしれません。

他の言語にもコンパイラが必要ですか?

ねこ研究員
ねこ研究員

shellscript、pythonでコンパイラの話を聞いたことがありません。

コンパイラが必要な言語とそうでない言語があります。C言語は必要な言語というだけです。

 

 

ねこ研究員
ねこ研究員

今回はここで終了です!
お疲れ様でした!