共有ライブラリのリンク

先日、共有ライブラリを作ったはいいけど、リンクされていないことが発覚。共有ライブラリを含む実行ファイルは作れたものの、実行時に共有ライブラリがないと言われエラーになる。lddコマンドで確認してみると確かに

>ldd test
  libtest.so => not found

みたいな感じで確かに見つかっていない。ていうか、同じディレクトリに置いているのだけどなぁ。
原因は2点

  • サーチディレクトリの設定が悪い
  • リンク時のパス設定が不完全

だった。
最初のサーチディレクトリはroot権限とかのことがあるので、環境変数LD_LIBRARYの設定で、ライブラリの置いている場所を指定した。(あ?もしかしたら、これはリンク時の問題であって、不要だったのかもしれない。。。)
で、リンク時のパス設定に関しては、同じディレクトリに、.soのファイルを置いていたのだが、

>gcc -o test test.c -Wl,libtes.so

みたいに書いていて、libtes.soがどうやらパス不良になっていたみたいだ。

>gcc -o test test.c -Wl,./libtes.so

みたいに、カレントを指定した上でやれば、難なく実行できた。

以上、覚え書きでした。