くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

GNU Coreutilsを自分でビルドする

lsrm など、GNU Coreutilsのコマンドを改造したいと思ったことはありませんか? そういうときは、自分でGNU Coreutilsをビルとする必要があります。やってみましょう。

GNU CoreutilsのソースはGitHubにミラーが上がっているので、それをcloneしてビルドするだけです。

github.com

検証環境

  • Ubuntu 16.04 LTS

手順

必要なコマンド・ライブラリのインストール

ビルドの際、 ./bootstrap./configure を実行したときに必要なコマンド・ライブラリがあるかどうかチェックされます。 セットアップ直後の状態で試してみると、以下のコマンド・ライブラリが足りないとメッセージが表示されました。

  • ./bootstrap

    • autoconf
    • automake
    • autopoint
    • bison
    • gettext
    • git
    • gperf
    • makeinfo ← パッケージはtexinfo
    • patch
    • rsync
    • xz ← パッケージはxz-utils
  • ./configure

    • gcc
    • g++
  • make に必要

    • make

全て合わせて、以下のようなコマンドでインストールしておきます。

$ apt install --no-install-recommends \
    autoconf \
    automake \
    autopoint \
    bison \
    gettext \
    git \
    gperf \
    texinfo \
    patch \
    rsync \
    xz-utils \
    gcc \
    g++ \
    make
  • --no-install-recommends オプションはお好みで。
  • ※こんなに神経質にやらなくても、半分くらいは apt install build-essential で入る。

リポジトリの取得

GitHubからcloneします。サブモジュール付きなので注意。

$ git clone --recursive https://github.com/coreutils/coreutils.git

ビルド設定

makeの準備をします。

cloneしたディレクトリに移動して

$ cd coreutils

bootstrap を叩き

$ ./bootstrap

./configure します。

$ ./configure

make

全体をビルドする場合

$ make

これで全てのソースがコンパイルされ、 src ディレクトリに実行可能ファイルが作成されます。

特定のコマンドだけビルドする場合

……はできないよう1で、一度上記の手順で make する必要があります。

rm コマンドだけを再度ビルドしたい場合は以下のようにします。

$ make src/rm

必要なソースだけがコンパイルされ、 src ディレクトリに実行可能ファイルが作成されます。