「ビルド」という作業は何を指しているのか:仕事で使える魔法のLAMP(6)
前回は公開鍵認証を使って安全かつ簡単にログインする方法を説明しました。これからはいよいよソフトウェア環境の構築に入ります。今回は「ビルド」という作業について解説します(編集部)
オープンソースソフトウェアを使うには
前回までの解説で、LAMP環境を構築するための基盤となるOSの準備まで説明しました。これからはその環境上で実際にLAMP環境を構築していきます。まずは、ソフトウェアのビルドについての基本的な知識を解説します。
いわゆるLAMP環境は、オープンソースまたはフリーソフトウェア(以下FOSS)と呼ばれるソフトウェアで成り立っています。ソースコードが公開されていて、誰でもが自由に利用できるものです。
開発元が公開、配布するソースコードは、そのままでは実行できません。ビルドやコンパイルという作業をを経てインストールということになります。なお、ビルドとコンパイルという言葉は、同じ意味で使うこともありますが、正確には指し示す範囲が異なります。それはおいおい明らかにします。
LAMPに限らず、FOSSのソースコードにはインストールの手順も付属していて、そこには大体の場合、次のように書いてあります。
$ ./configure $ make $ sudo make install
それぞれ1行目から、設定、ビルド、インストールを実行するコマンドです。環境がきちんと整っていれば、確かにこれだけの手順でインストールが完了します。意外と簡単なものです。
しかし、これで解決とばかりにここで立ち止まってしまうと、いずれ問題が起こるでしょう。たまたまうまくいっていただけで、別の環境ではビルドが失敗するかもしれません。デフォルトの設定を変えたいと思うこともあるでしょう。
上記の手順の裏側で何が動いているのかを理解すれば、ビルド失敗などの事態にも確実に対処できるようになります。もちろんディストリビューションのパッケージを使えば、そういった知識なしでインストールしてすぐに使えるのも事実です。ですが、第1回でも述べた通り、本連載ではLAMP環境を構築することを目的としています。いろいろな環境、用途に合わせて環境を構築できるように、手順の裏側を詳しく紐解いていきたいと思います。
まずはビルドといわれている作業、上記手順でいうとmakeコマンドで何が行われているのかを見ていきます。
コンパイラの準備
ソースコードはテキストで記述されたプログラムです。これはコンパイルすることで実行可能な形式になります(図1)。PHP言語などはテキストのソースコードのまま実行できますが、LAMPを構成するソフトウェアはC言語やC++言語でプログラムを記述してあります。実行するには必ずコンパイルしなければなりません。
コンパイルにはコンパイラというソフトウェアが必要になります。さまざまなプログラミング言語に対応したコンパイラがありますので、必要なものを選んでインストールします。
Linux上で一般的に使われるコンパイラもFOSSです。これもソースコードからビルドできますが、パッケージを使うことにします。すべてのソフトウェアをビルドするのは面倒ですから、特に最新バージョンを使うまでもないもの、LAMPにあまり関係ないものなどは、パッケージを使って楽に済ませます。それに、コンパイラのビルドにもコンパイラが必要という、「鶏が先か卵が先か」的な問題があります(興味がある方は「コンパイラのブートストラップ問題」で検索してみてください)。
LAMP環境の構築に必要なコンパイラは、C言語とC++言語に対応するものです。GNU Compiler Collection、略してGCCをインストールします。GCCはさまざまな言語に対応したコンパイラです。
インストールするには次のコマンドを実行します。標準状態でインストール済みである可能性もありますが、その場合はコマンドを実行しても何もインストールせずに終了します。
$ sudo yum install gcc gcc-c++
コンパイラの動作を確認
インストールが済んだら、試しにごく単純なC言語のプログラムをコンパイルして実行してみましょう。図2の内容でhello.cというファイルを作成します。「Hello, World!」と表示するだけのプログラムです。
#include <stdio.h> main() { printf("Hello, World!\n"); }
ソースコードをコンパイルするには、次のようにgccコマンドを使います。コンパイル結果となる実行ファイル名は、-oオプションで指定します。
$ gcc hello.c -o hello
gccコマンドは、エラーが発生しない限り何も表示せずに終了します。ソースコードに間違いがなければ、helloというファイルができているはずです。これを実行してみましょう。
$ ./hello Hello, World!
LAMPなどのFOSSのソースコードを実行可能にするには、すべてこのようにしてコンパイルする必要があるのです。
複数ファイルから実行可能なファイルを作る
この例は小さなプログラムですので1ファイルのソースコードでしたが、実際のFOSSを使うときは、1ファイルで済むことはありません。ソフトウェアの内部構造などに従って、複数のファイルに分割したものになります。
複数のソースコードのファイルから構成される場合であっても、最終的な実行形式のファイルは1個です。複数のファイルをコンパイルするときは、最後にそれらをまとめ上げて実行可能な形式にするための、リンクという作業が必要になります(図3)。リンク前のコンパイル済みのファイルはオブジェクトファイルと呼びます。拡張子は.oです。
このコンパイルからリンクという一連の流れが、ビルドです。リンクするプログラムはリンカといいます。これらの用語や流れはとても重要ですので、よく覚えておいてください。
なお、ソースコードが1ファイルのときであっても、内部ではコンパイルとリンクが自動的に実行されています。オブジェクトファイルは一時ファイルとして扱われ、リンクが終わると消されているのです。つまり、コンパイルという言葉は、正確な意味では、オブジェクトファイルに変換することまでを指すのです。1ファイルの例ではリンクまで含めてコンパイルと言いましたが、これは広義な使い方ということになります。
次回はリンカやmakeコマンドについて解説します。
- CMakeでMySQLをビルドしてみる
- MySQLのビルドに欠かせないCMakeを準備する
- いよいよMySQL編、ソースからビルドすべきか?
- PHPでセッションを利用するための設定
- クライアントがアクセスできる範囲を制限する
- エラーメッセージをどう扱うか?
- ファイルのアップロードを制限する
- リクエストデータを受け取る変数の扱い
- マジッククオート機能には頼らない
- 安全を考えてPHPの実行時設定を調整する
- Apacheの設定ファイルでPHPの設定を変える
- PHPの設定ファイルを作って配置してみる
- PHPスクリプトを実行できるようにする準備
- PHPエクステンション組み込みの仕上げ
- 単純なデータを管理するDBMを使えるようにする
- エクステンションの組み込み状況を確認する
- PHPでデータベースを使う準備をする
- XMLを処理できるようにする
- エクステンションを有効にしてビルドに挑戦!
- PHPテスト失敗の原因を追究する
- 早速PHPをビルド! そしてテスト!
- PHP編に突入! まずはソースをダウンロード
- 設定ファイルを作成してApacheを動作させる
- 設定ファイルや公開ドキュメントの配置を考える
- 1つのサーバに複数の仮想サーバ?
- Apacheの設定ファイルを記述する前に
- サードパーティのApacheモジュールをビルドする
- 認証DBにアクセスするライブラリを組み込む
- Apache同梱ソフトウェアに引数を渡してビルド
- OpenSSLをビルドしてApacheで利用する
- proxyやsslのモジュールを使ってみる
- ライブラリが足りなくてビルドできないときは?
- Apache HTTP Serverのビルドを始めよう
- configureでソフトウェア固有の設定を変更してみる
- configureの設定を変更してみる
- 配布パッケージの中身と、configureの役目を知る
- ダウンロードファイルが真正なものであるかを確認
- Makefileをいろいろ書き換えながらビルドしてみよう
- makeを使ってソフトウェアをビルドしてみよう
- ダイナミックリンクとスタティックリンク
- 「ビルド」という作業は何を指しているのか
- 公開鍵認証でsshを安全に使う
- sshを便利にする公開鍵暗号
- アクセス制限の設定とCentOSのアップデート
- サーバに接続して、一般ユーザーのアカウントを作る
- LAMP環境、自分で作りませんか?
Copyright © ITmedia, Inc. All Rights Reserved.