Inside Linux Software オープン・ソースソフトウェアのからくりとしくみ

先日職場の先輩の机にあった本を偶然手にして、

「これは良い本を見つけた!」

といたく感動したので紹介します.

Inside Linux Software オープン・ソースソフトウェアのからくりとしくみ

Linuxと題名にありますが、おそらく FreeBSDなどのBSD系、その他のUni*系のOSでも通用する内容だと思われます.

2007年に出版された本で若干情報に古い点がありますが、それを補って余りある内容です.

本書は以下の6章から構成されてます.

  1. プログラムのコンパイルとリンク
  2. ビルドの自動化と autotools
  3. ソフトウェアの国際化
  4. パッチの作成と適用
  5. ドキュメントの記述
  6. RPMによるソフトウェア管理

以下、特に感銘を受けた箇所を紹介します.

文学書ではないけれども、欲しい情報が理路整然と書かれている本には感銘を覚えます.

プログラムのコンパイルとリンク

何げなく普通に使っているコンパイラ(gcc)、ライブラリについて詳しく紹介されています.

若手だけでなくベテランにも有益な情報かと.

コンパイラによってC言語のソースコードからバイナリコードが生成される流れ、すなわち

  1. プリプロセス
  2. コンパイルと最適化
  3. アセンブリ
  4. リンク

という各工程について述べられてます.

この流れが分かっているとビルドエラーが発生しても対処の仕方が変わってきます. プリプロセスでエラーが発生しているのか?、あるいはリンクで発生しているのか、が分かっていると問題解決もスムーズにいくかと思います.

gcc のプリプロセスは cpp がやっていると今まで思ってましたが、それはかなり古い情報で現在はコンパイラの本体の cc1 がやっている、とのこと. これもこの本を読んでの収穫です.

生成されたオブジェクトファイルの構造、ELFの構造もこの本以外に言及されたのは以下の本しか知りません. ここも貴重な情報です.

書いたCソースがどのようにコード化されて、メモリに配置されて、という流れが解説されていて、組込みソフトウェアエンジニアにとっては必須の知識を得ることができます.

CPUやメモリの増設が容易ではない組込みソフトウェアでは、与えられたデバイスをいかにして使い倒すか、ということが求められています. そういう意味ではこの本の情報は助かります.

ビルドの自動化と autotools

この章の内容が本書を購入するきっかけとなりました.

オープンソースのビルドの自動化に欠かせない configure スクリプト生成に欠かせない Autoconf Automake について書かれて、それも日本語で読める本は本当に貴重です.

かなり昔に Autoconf の本があったと記憶してますが、もともと複雑な上に日本語訳がさらに分かり辛くて…読むのを断念した経緯があります…

社内で使うツールのソースコードをリリースするときに configure スクリプトを作成したいとずっと思ってましたが、なかなか良い参考書がなくて難儀していました.

そういった意味でこの本はとても貴重.

あとは、組込みソフトウェアのクロスコンパイル環境でライブラリをインストールする際によくトラブる Libtool の解説があるのもありがたい!!

Libtool についてまとまって読める情報ってこの本以外見たことないです…

また、この章の冒頭にある makeに関する記述は、これからmakefile を書く新人さんに読んでもらうには最適かもしれません.

パッチの作成と適用

日常のパッチの生成や適用をやってますが、意外に知らないことも多いです.

特に patch コマンドのオプションの意味を分からずに使っていることも多いので、この章の情報は若手、ベテランに限らず有効です.

ドキュメントの記述

流石に最近ではtexinfoでマニュアルを書くことはありませんが、知っていて損はない情報です.

また, man コマンドの知らない人、意外に多いようで、この章もなかなか貴重な情報です.

以上、手元に置いて損はない一冊だと思いますし、毎日使っているツールでも知らないこともあることを気づかせてくれる1冊です.

この夏休みに読みたい本の一冊です.

“Inside Linux Software オープン・ソースソフトウェアのからくりとしくみ” への2件の返信

コメントは受け付けていません。