coreutilsをソースコードからコンパイルして使う

普段はウェブアプリを作ってますが、
もっとレイヤーが低いところも勉強していかないとこの先生きのこれないのでは、、、という不安から、タイトルの通りcoreutilsソースコードからコンパイルしてみることにしました。


まずはStable Sourceの最新版を適当なところにダウンロードします。

www.gnu.org

kentas@kentas:~$ mkdir Test
kentas@kentas:~$ cd !$
cd Test
kentas@kentas:~/Test$ wget https://ftp.gnu.org/gnu/coreutils/coreutils-8.31.tar.xz


tarで解凍します(.xzは大文字のJオプションで解凍できます)

kentas@kentas:~/Test$ tar -xJf coreutils-8.31.tar.xz 
kentas@kentas:~/Test$ cd coreutils-8.31/


ソースコードからコンパイルした感を味わいたいので、catコマンドを修正して問答無用に"meow"と出力するように変更してみたいと思います。

kentas@kentas:~/Test/coreutils-8.31$ vim src/cat.c 
502 int
503 main (int argc, char **argv)
504 {
505   printf("meow");  // 追加
506   return 0;        // 追加
507   /* Optimal size of i/o operations of output.  */
508   size_t outsize;

保存してconfigureスクリプトを実行

kentas@kentas:~/Test/coreutils-8.31$ ./configure


Makefileができたらmakeコマンド

kentas@kentas:~/Test/coreutils-8.31$ make


最後にmake installでバイナリをインストールしたら完了です

kentas@kentas:~/Test/coreutils-8.31$ sudo make install


catを実行

kentas@kentas:~/Test/coreutils-8.31$ cat
meowkentas@kentas:~/Test/coreutils-8.31$


改行を忘れていて少し残念な感じになりましたが、とりあえずうまくいきました。