環境構築するときに使うすごく基本的な用語

# ■ サーバ構築とは
サーバ上で、サービスの提供が可能な状態にすること。
具体的には、サーバのディストリビューションに含まれていないアプリケーションのインストール、あるいは不要なソフトをアンイストールするなどを行う。


## ● カーネル

「Linuxカーネル」のように、スケジューラーやメモリ管理、ファイルシステム、ネットワーク管理などのOSの基本機能をなすもの。

## ● ディストリビューション

「Linuxディストリビューション」のようにカーネルを中心に、GUI環境やオフィスソフト、Webブラウザなどの各種ソフトウェアを組合せて、ユーザが使えるようにしたもの。

## ● コードネーム

製品に対して、バージョン名や型番に頼らずに分かりやすく区別するためにつける別名・愛称。

例

* Debian 8系 ⇒ コードネーム : Jissse
* Debian 7系 ⇒ コードネーム : Wheezy 

## ● メジャーバージョンアップ
ソフトウェアやハードウェアなどの設計内容の変更など大幅な改訂が入ること。
大幅な改定に関する明確な基準はなく、作り手の意図による。
(3.2⇒4.0)のように整数部分が上がっているとメジャーバージョンアップと呼ぶことが多い。
http://e-words.jp/w/%E3%83%A1%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97.html

## ● マイナーバージョンアップ
ソフトウェアやハードウェアなどの設計内容の変更など小規模な改訂が入ること。
小規模な改定に関する明確な基準はなく、作り手の意図による。
(3.2⇒3.3)のように少数部分が上がっているとマイナーバージョンアップと呼ぶことが多い。

http://e-words.jp/w/%E3%83%9E%E3%82%A4%E3%83%8A%E3%83%BC%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97.html

## ● 環境変数

システムの動作を記録している変数。

例

* PATH : コマンドサーチの際に使用されるディレクトリパス
* LANG : ロケールの文字コードなどを設定

# ■ コンパイラ

人間語で記載されたソースコードを機械語に翻訳(コンパイル)し、コンピューター上で実行できるオブジェクトコードに変換する。

http://e-words.jp/w/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB.html

## ● クロスコンパイラ

開発に使用している環境とは異なる環境向けに実行可能ファイルを作成させること。

例:
開発環境（コンパイルする環境）のアーキテクチャがintelで、
実行環境(ソフトウェアを動かす環境)のアーキテクチャがarmになる。

http://e-words.jp/w/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB.html
http://qiita.com/7shi/items/2d44e040bae930d11088


# ■ リンカ

コンパイルされた複数のプログラム、及びライブラリなどを連結(合体)させて、実行可能な形式にすること

http://e-words.jp/w/%E3%83%AA%E3%83%B3%E3%82%AB.html

# ■ ローダ

リンク後の実行形式ファイルをCPUが実行するためには，
メモリにプログラムを読み込む(ロード)する。

コンピュータの起動時にOSを読み込んで実行するプログラムは「ブートローダ」（boot loader）という。

http://e-words.jp/w/%E3%83%AD%E3%83%BC%E3%83%80.html

# ■ ビルド

コンパイルやリンクなどの一連の処理を行い、最終的な実行可能ファイルを作成すること。

http://e-words.jp/w/%E3%83%93%E3%83%AB%E3%83%89.html

# ■ ライブラリ

特定の機能をまとめ、他のプログラムから利用できるようにしたもの。

http://e-words.jp/w/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA.html

## ● ライブラリファイル

リンクされるタイミングによって異なる。

### ○ 動的ライブラリ (.soファイル 【 shared object file )

プログラムの実行時にリンクされる動的リンク（ダイナミックリンク）ライブラリ。

複数のプログラムが共通して利用するライブラリのため、共有ライブラリとも。

http://e-words.jp/w/.so%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB.html

### ○ 静的ライブラリ(.aファイル 【 archive file 】)

ビルド時にリンクされる静的リンク（スタティックリンク）ライブラリ。

http://e-words.jp/w/.so%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB.html



## ● ライブラリを認識させる

Linux系OSでは通常、ライブラリは/libや/usr/lib以外のライブラリにある。
それ以外のライブラリは/etc/ld.so.conf、または/etc/ld.so.conf.d/****.confに記載されているファイルパスを
ローダが実行時に必要なライブラリを読み込む。

コンピューターが見るファイルは上記のconfではなく、/etc/ld.so.cacheになる。

ldconfigコマンドを実行することで、/etc/ld.so.cacheにconfファイルの内容が反映される。

http://itpro.nikkeibp.co.jp/article/COLUMN/20140127/532504/
http://wa3.i-3-i.info/word13812.html

# ■ 実行ファイル

メモリに読み込んで実行できる形式のプログラムファイルのこと。

特定のマイクロプロセッサ（MPU/CPU）用の機械語に翻訳した[バイナリ](https://quartet-communications.com/info/topics/3182)形式のファイル。
命令や処理するデータの羅列になっている場合が多い。

http://e-words.jp/w/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB.html


# ■ autotools

autotoolsは、コンパイ実行環境（OS、コンパイラ、ライブラリなどの依存関係）を自動的に検出して、ソースコードのコンパイルからインストールまでの工程を自動化するツール郡。

http://www.gnu.org/software/autoconf/autoconf.html
http://capm-network.com/?tag=autotools

# ■ 参考サイト
[configure, make, make installの違い](http://www.itmedia.co.jp/help/tips/linux/l0302.html
)

[debian, ubuntuで公式パッケージをソースからビルドする](http://note.kurodigi.com/debian-srcpkg/)