前の講座でお伝えしたように、ガチンコ.su塾では用途によってパッケージ版とソース版を使い分けます。
そのためプログラムソースを実行形式に変換するためのコンパイラが必要です。
なんだか難しそうですね…
確かに… いやそんなことないから大丈夫ですよ!!
ソースコードをコンパイルしてインストールするので、ちょっとだけ手間はかかります。でもこんなメリットがあります。
- 機能を明確に知ることができる
- 使用する機能のみを有効にしてインストールできる
- 最新のバージョンを試すことができる
- パッケージのメンテナンス終了に怯えることがない
- OSの世代やLinuxのディストリビューションが違っても移行が簡単
今回の講座は、ソースコードをコンパイルするために必要な開発ツールをインストールします。
目次
動画講座 開発環境の構築
開発ツールのインストール
開発ツールはyumでインストールします。
これまでは「yum install」でインストールしていましたが、今回はgourpinstallというオプションを使います。
sudo yum groupinstall "Development tools"
ソースコードからインストールする手順
Linux環境において、アプリ等をソースコードからインストールするとき、一般的には以下のような手順で行います。
- configure
- make
- make install
configure
圧縮されたソースコードを解凍すると展開されたディレクトリ内にconfigureというファイルがあります。
configureを実行すると、インストールに必要なライブラリ等がシステムに正しく設置されているかチェックされます。
チェック後、環境に合わせたMakeFileが作られます。
make
configureで作成されたMakeFileが参照されコンパイルされます。
make install
コンパイルされたファイルやディレクトリが所定の場所にインストールされます。
オプションを指定しなかった場合、デフォルトのままインストールされます。
slコマンドのインストール
動画の3分40秒からを参照に、豊田正史さんのWebページを経由してGitHubからソースコードのzipファイルをダウンロードします。
slソースコードのダウンロード
インターネット上で配布されているソースコードなどのファイルはwgetでダウンロードすることができます。
cd /home/linux8weeks
wget https://github.com/mtoyoda/sl/archive/refs/heads/master.zip
slソースコードの解凍
ダウンロードしたmaster.zipを解凍します。
unzip master.zip
解凍するとsl-masterというディレクトができて、その中にソースコードが格納されています。
cd sl-master
slコマンドのコンパイル
通常configureをすることでサーバーの環境に合わせたMakefileを作るのですが、slコマンドのソースの中には予めMakefileが同梱されています。
ですから、そのままmakeでコンパイルすることができます。
make
gcc -O -Wall -o sl sl.c -lncurses
sl.c:41:10: fatal error: curses.h: No such file or directory
41 | #include <curses.h>
| ^~~~~~~~~~
compilation terminated.
make: *** [Makefile:15: sl] Error 1
slコマンドをコンパイルするために必要なcurses.hというヘッダーファイルが無いことによりコンパイルが停止しました。
コンパイルをしていると、よくこのようなことに遭遇します。
問題が発生した時、それを解決する能力を求められるのもこの仕事。
このようなことを日々やっていると仕事だけでなく実生活においても問題解決能力、そして予測し回避する能力もついてきますよ。
curses.hが含まれるパッケージを検索
curses.hは画面制御をする際に必要なライブラリーです。
このヘッダーファイルが含まれるパッケージを検索します。
sudo yum provides \*/curses.h
検索結果から、ncurses-develというパッケージをインストールすればいいことが分かりました。
sudo yum install ncurses-devel
動画中マシンタイプを調べインストールすべきパッケージを確認していましたが、マシンタイプは自動で選択されます。
ncurses-develのインストール後、再度makeでコンパイル。
make
今度はエラーなくコンパイルが完了したはずです。
ll
同じディレクトリ内に「sl」というファイルがありますか?
slコマンドの実行
slコマンドを実行してみましょう。
./sl
機関車が走り始めたら成功です。このslコマンドですが、ジョークコマンドとしてパッケージでも配布されています。
今回はコンパイルとはこういうものだということを知って欲しかったので、あえてソースコードからslをインストールしてみました。
ファイル名からパッケージを探すコマンドは役に立つと思いますのでメモしてください。
yum provides \*/ファイル名
次はApacheをソースからインストールしていきたいと思います。
コメント