開発環境 C言語(その1)

【連載】

にわか管理者のためのLinux運用入門

【第156回】開発環境 C言語(その1)

[2018/12/11 08:00]後藤大地 ブックマーク ブックマーク

サーバ/ストレージ

運用を簡単にする”次のステップ”

ある程度Linuxサーバを管理できるようになってきたら、”次の手抜き”ができないか模索を始めたい。Windowsサーバよりもさまざまな作業を簡単に自動化できるのが、Linuxサーバの良いところだ。自動化できれば、さらに作業の手間を減らすことができる。

その段階に入ったら「プログラミングする」ということを考え始めたい。特にOSの機能を操作するとなると、CまたはC++の利用を考えたいところだ。OSの機能の多くはC言語で利用できるように整えられているため、C言語でプログラミングできるようになると、選択肢の幅がぐぐっと広がっていくのである。

初めてプログラミングをするなら、シェルスクリプトのようなスクリプト言語やPythonといったプログラミング言語のほうがとっかかりとしてはわかりやすい。C言語やC++は挫折するユーザーが多いプログラミング言語でもあるので、ある程度ハードルが高い点は否めない。しかし、C/C++、特にLinuxの場合はC言語ができるとかなり有利になる。やるかやらないかは別として、今回はC言語のプログラミング環境をセットアップする方法を紹介しておこう。

C言語環境をセットアップ

Ubuntu 18.04 LTS

C言語を利用するには少なくともC言語コンパイラをインストールする必要がある。コンパイル作業をまとめておくためにmakeというビルドツールも使えるようにしておきたい。最低限、この2つのツールさえ用意しておけばかなり多くのことができるようになる。

しかし、こうしたツールはUbuntuにはデフォルトではインストールされていない。次のように使いたければインストールを行うようにメッセージが表示される。なお、「cc」というコマンドがC言語のコンパイラだ。

makeコマンドやccコマンドはデフォルトではインストールされていない

C言語コンパイラはC言語のソースコードを実行可能なバイナリファイルに変換する処理を行うツールのことで、C言語を使った開発の中心的な役割をこなす。ccという名前でインストールされていることが多い。C言語コンパイラの実装系はいくつか存在しているが、現在であれば「LLVM Clang」を選んでおけばよいと思う。アクティブに開発が進められている上に人気が高く、コンパイル時のエラーメッセージなどがわかりやすい。

makeには主に「GNU make」と「BSD make」の2種類がある。これはどちらも選んでもよいのだが、GNU makeとBSD makeとで書き方が異なるので混ぜると混乱すると思う。どちらかのみで統一した使い方をしたほうがよい。コマンドくらいしか作らないという場合には、GNU makeで十分だ。*BSDのカーネルやコマンドもビルドするということであれば、BSD makeを使ったほうがよいだろう。

パッケージ 内容 コマンド
clang LLVM Clang cc
make GNU make make
freebsd-buildutils FreeBSDビルドユーティリティ fmake

インストールすると次のようにコマンドが動作するようになる。

ccやmakeが動作するようになった環境

ちょっとしたソースコードを書いてコンパイルし、実行してみよう。まず、vimなどのエディタを使って次のように「welcome.c」というファイルを作成する。

初めてのC言語ソースコード「welcome.c」

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    printf( "            .-/+oossssoo+/-." "\n"
        "        `:+ssssssssssssssssss+:`" "\n"
        "      -+ssssssssssssssssssyyssss+-" "\n"
        "    .ossssssssssssssssssdMMMNysssso." "\n"
        "   /ssssssssssshdmmNNmmyNMMMMhssssss/" "\n"
        "  +ssssssssshmydMMMMMMMNddddyssssssss+" "\n"
        " /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/" "\n"
        ".ssssssssdMMMNhsssssssssshNMMMdssssssss." "\n"
        "+sssshhhyNMMNyssssssssssssyNMMMysssssss+" "\n"
        "ossyNMMMNyMMhsssssssssssssshmmmhssssssso" "\n"
        "ossyNMMMNyMMhsssssssssssssshmmmhssssssso" "\n"
        "+sssshhhyNMMNyssssssssssssyNMMMysssssss+" "\n"
        ".ssssssssdMMMNhsssssssssshNMMMdssssssss." "\n"
        " /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/" "\n"
        "  +sssssssssdmydMMMMMMMMddddyssssssss+" "\n"
        "   /ssssssssssshdmNNNNmyNMMMMhssssss/" "\n"
        "    .ossssssssssssssssssdMMMNysssso." "\n"
        "      -+sssssssssssssssssyyyssss+-" "\n"
        "        `:+ssssssssssssssssss+:`" "\n"
        "            .-/+oossssoo+/-." "\n");
}

次に、「welcome.c」を作成したのと同じディレクトリで次のコマンドを実行する。

cc welcome.c -o welcome

これで、カレントディレクトリに「welcome」という実行ファイルが作成される。これは、そのまま実行できる。コンパイルと実行を実際に行うと次のようになる。

ソースコードのコンパイルと実行

これは「HelloWorld」と呼ばれる種類のプログラムで、プログラミング言語を初めて扱う際に作られることが多い「文字列(HelloWorld)を出力するプログラム」をちょっといじったものだ。

プログラムの作成で広がる世界

プログラムが作成できるようになると、OSの提供している機能をダイレクトに利用できるようになる。プログラムを作らない場合には目的とする処理ができるコマンドやユーティリティを探すことになるが、プログラムを作れるとそれを自前で用意できるようになる。

C言語で書くべきか、シェルスクリプトで書くべきか、既存のサードパーティ製ソフトウエアを使うべきかというのはケースバイケースなのだが、C言語で書くという選択肢が選べるようになると、これまで以上に対応できる範囲が広がりやすくなる。管理がそろそろマンネリ化してきたなとか、今よりもさらに自動化を進めたいと思い始めたら、ぜひC言語に一度、トライしてみていただきたい。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

なぜ今、統合システムなのか? 押さえておくべき「3つのインパクト」

なぜ今、統合システムなのか? 押さえておくべき「3つのインパクト」

ガートナー ジャパンは10月31日~11月2日、都内で「Gartner Symposium/ITxpo 2017」を開催。11月1日には同社 主席アナリストの青山浩子氏が登壇し「CIOが理解すべき統合システムの3大インパクト」と題する講演を行った。本稿では、講演の内容をダイジェストでお届けする。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
知りたい! カナコさん 皆で話そうAIのコト
教えてカナコさん! これならわかるAI入門
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る