C言語でテストドリブンを試してみる

CUnitというユニットテストライブラリを使ってみることにした。とりあえずテストケースは自動生成したいけど、まずは手書きで。http://homepage3.nifty.com/kaku-chan/cunit/chapter_003.htmlを参考にしながら書いてみる。

と、テストケースを書くところまではよかったんだけど、コンパイルが終わっていざテストを実行しようとすると

a.out error in loading shared object file: libcunit.so.1: cannot open shared object file: No such file or directory

というエラーが出て実行できない。ちゃんと /usr/local/lib を -L オプションで指定してあるし、/usr/local/lib/libcunit.so.1 も存在する。なんでだろう、と思ってググってみたら、すぐにわかった。

ここでの例は,libpisock.so.3ファイルが見当たらないという内容だが,このファイルを検索すると/usr/local/libに存在するとしよう(# locate libpisock.so.3などとして検索したものと想定する)。しかし,ライブラリとしては,次のように認識されていない。

# ldconfig -v |grep libpisock.so.3
#

このような際は,次のようにldconfigコマンドを実行して新たに追加されたライブラリをデータベースに追加させなければならない。しかし,これでも同様のエラーが表示される場合には,検索先ライブラリを指定する設定ファイルを確認してみよう。

# vi /etc/ld.so.conf
/usr/X11R6/lib
/usr/lib
/usr/local/lib ←追加する

# ldconfig

 ld.so.confファイル内に対象となるライブラリが存在するディレクトリが含まれていない時は,最下段に追加すればよい。続けてldconfigを実行すれば前述のようにデータベース更新される。
「file is not a dynamic executable or shared object」とエラー表示される - ITmedia エンタープライズ

/etc/ld.so.conf を見てみると、確かに /usr/local/lib がないので、それを追加して sudo ldconfig を実行したらテストが動くようになった。そして1発グリーンの夢は儚く消えた。